Есть ли способ связать двоичные файлы компилятора PGI с существующими двоичными файлами GNU? Когда я пытаюсь связаться, я получаю следующую ошибку:
oacc.c.o:(.init+0x8): undefined reference to `__pgio_ini'
collect2: ld returned 1 exit status
Подробности:
Я скомпилировал несколько файлов с помощью gcc и g ++. C main
функция включена в эти файлы. Теперь я должен добавить функцию OpenACC в проект, который должен быть скомпилирован PGI C Compiler (pgcc
). После компиляции я получаю вышеуказанную ошибку ссылки (ошибка одинакова для обоих pgCC
или же g++
в качестве компоновщика).
Может быть, мне нужно интегрировать функцию OpenACC в фиктивную библиотеку и включить / связать ее с проектом. Но я понятия не имею, как это сделать.
К сожалению, весь проект не может быть скомпилирован с компилятором PGI, так как некоторые функции зависят от компилятора GNU.
Заранее спасибо.
В более новых версиях инструментальной цепи GNU на основе GCC требуется, чтобы файлы, которые должны быть связаны (объектные файлы и статические и динамические библиотеки), были указаны в том порядке, в котором символы зависят друг от друга. Следовательно, вы должны поместить флаги компоновщика внешних библиотек в качестве последних параметров:
gcc -o prog prog.o -lfoo
правильно, тогда как
gcc -o prog -lfoo prog.o
приведет к ошибке компоновщика.
Других решений пока нет …