2012-03-23 1 views
0

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

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'

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

ответ

0

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

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

0

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

+0

Но почему это не проблема, если я связал его с '-lpthread'? – Andrew

+0

это * есть *. Всегда. Когда дело доходит до привязки, по крайней мере. –

+0

Ну ... ошибок не бывает, когда я просто использую '-lpthread'. Так ... Это странно для меня. – Andrew

Смежные вопросы