g ++ объединяет библиотеки - PullRequest
0 голосов
/ 23 марта 2012

Итак, я пытаюсь включить библиотеку libpthread.a в свою собственную библиотеку. Но это дает мне проблемы с компоновщиком, когда я пытаюсь скомпилировать код, который его использует. Я компилирую это, выполнив следующее:

g++ foo.cpp foo.o
ar x /usr/lib/libpthread.a
ar rcs libfoo.a *.o

g++ bar.cpp -o bar -L./ -lfoo

Но я получаю кучу undefined reference to 'pthread_stuff'

Я действительно не понимаю, что я делаю неправильно.

Ответы [ 2 ]

0 голосов
/ 23 марта 2012

Поэтому я исправил это, изменив аргументы компиляции на:

g++ -static bar.cpp -o bar -L./ -lfoo

0 голосов
/ 23 марта 2012

Вы должны объявить свои функции, которые используют другие функции C, как extern "C", иначе искажение имен в C ++ "исказит" ваши имена.Дополнительная информация: http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage%2Fref%2Fclrc01name_mangling.htm

...