Я хотел бы знать, как связать скомпилированный код pgC++ (blabla.a) с основным кодом, скомпилированным с компилятором C++ или g ++ GNU. На данный момент, связывающем с невыполнением Gnu C++ линкер дает ошибку, как: неопределенной ссылка на `__pgio_initu»Связывание скомпилированной библиотеки pgi с gcc-компоновщиком
компиляторовответ
Как уже указывал предыдущий человек, PGI поддерживает использование имени G ++ при использовании команды pgc++
. Судя по этому результату, я предполагаю, что вы связываетесь с g ++, а не с pgC++. У меня был наибольший успех при использовании pgC++ в качестве компоновщика, чтобы он нашел библиотеки PGI. Если это не вариант, вы можете связать исполняемый файл с pgc++ -dryrun
, чтобы получить полную линию ссылок и за пределами опций -L
и -l
, чтобы получить те же библиотеки.
Различных C++ использовать различные name-mangling конвенций генерировать имена, которые они выставляют линкер, поэтому имя функции члена int A::foo(int)
будет излучаться в компоновщик компилятором A в виде одной строки из goobledegook, а компилятором B в виде совершенно другой строки goobledegook, , и компоновщик не знает, что они ссылаются на ту же функцию. Следовательно вы не можете связать объектные файлы, созданные различными компиляторами C++, если они не использовать те же имя-коверкая конвенции (и вполне возможно, даже не то:. Имя-коверкая только один аспект ABI совместимости)
Это указано в соответствии с this document, PGC++ поддерживается совместимость с gGC 3 года назад, при условии, что компилятор PGI C++ был вызван именно с помощью команды pgc++
или pgcpp --gnu
. Возможно, библиотека, с которой вы работаете, не была построена таким образом или, возможно, была построена с использованием более старого компилятора PGI C++.
Во всяком случае, если г ++ компилирует заголовки вашего blabla.a
и выделяет различные символы из них в blabla.a
, вы не можете связать г ++ код с blabla.a
. Вам нужно будет перестроить blabla.a
с g ++, что, возможно, не является вариантом.
- 1. с - Связывание с PGI OpenACC поддержкой библиотеки с GCC
- 2. Связывание скомпилированной библиотеки с более новой версией glibc
- 3. с - Динамически связывая PGI OpenACC с поддержкой библиотеки с GCC
- 4. проблемы с использованием кросс-скомпилированной библиотеки
- 5. Связывание с конкретной библиотеки
- 6. Связывание библиотеки с G ++
- 7. Связывание статической библиотеки с проектом библиотеки классов
- 8. Использование скомпилированной библиотеки C из node.js
- 9. Создание javadoc-сайта из скомпилированной библиотеки jar
- 10. создать дополнительные новые функции скомпилированной библиотеки
- 11. Храните xml внутри скомпилированной библиотеки DLL
- 12. Связывание библиотеки TGUI с cmake
- 13. Связывание статической библиотеки с dll
- 14. Связывание PCl библиотеки с ROS
- 15. Связывание с платформы конкретной библиотеки
- 16. Связывание аппаратной библиотеки
- 17. Каскадное связывание статической библиотеки?
- 18. Компиляция mvapich2-2.1 с PGI
- 19. Параллельный make с компилятором pgi
- 20. Связывание общей библиотеки Autotools
- 21. Связывание библиотеки в python
- 22. Распространение скомпилированной библиотеки JavaScript с использованием Bower and Grunt
- 23. Загрузка скомпилированной библиотеки Matlab Shared в Python с использованием Ctypes
- 24. Python + setuptools: распространение предварительно скомпилированной общей библиотеки с boost.python bindings
- 25. Рецензия на библиотеки библиотек, совместимых с скомпилированной версией sdk 24
- 26. Связывание с динамической библиотеки с зависимостями
- 27. Параллелизация компилятора PGI + =
- 28. Связывание готовой внешней статической библиотеки
- 29. Связывание статической и динамической библиотеки
- 30. Связывание с заголовочного файла библиотеки VICI
спасибо, что это сработало. –
@MedAissa Не могли бы вы отметить этот ответ в качестве решения для тех, кто случайно ищет эту же проблему в будущем? Благодарю. – jefflarkin