2014-02-24 4 views
0

Я пытаюсь скомпилировать программу на Mac 10.9.1, но столкнулся с проблемой. При запуске gcc-команды с флагом -lpthread для создания dylib ссылка не работает со следующей ошибкой.ld: библиотека не найдена для -lpthread

ld : library not found for -lpthread. 

libpthread.dylib расположен в/USR/Lib/

кто может помочь.

Благодаря

+0

Как правило, флаг GCC -lX будет пытаться связываться с общей библиотекой с именем «libX». В вашем случае вы пытаетесь связать «libpthread», который не может быть найден. Укажите местоположение с помощью этого флага: «-L/folder/contains/libpthread». –

+2

Попробуйте 'gcc -pthread ...' (без 'l'), посмотрите, работает ли он. –

+0

Я пробовал решения, упомянутые в ответах, но никто, кажется, не полностью решает проблему. Примечание: компилятор используется в г ++ (версия 4.2.1) Об использовании -pthread вместо -lpthread, ошибка для lpthread ушла, но теперь я столкнулся еще связывающую ошибка LD: библиотека не найдена для libstdC++ Использование -L/usr/lib во время компоновки означает, что мне нужно изменить много файлов в моем проекте. Я хочу сказать, что я не сталкивался с этой проблемой в моей системе 10.8.6. Эта проблема существует только при новой установке 10.9.1. Пожалуйста, помогите. – Tony

ответ

0

Это звучит, как вам нужно указать каталог, содержащий libpthread.dylib файл, который на большинстве компьютеров Mac является /usr/lib. Сделайте это, используя аргумент -L до ld, как в ld -L/usr/lib -lpthread.

Редактировать: gcc также принимает аргумент -L.

0

Использование -lpthread технически не подходит для этого. Вы получите лучшие, более портативные результаты, используя -pthread в командной строке GCC. Используйте его для компиляции и ссылки. Он установит важные определения препроцессора и свяжет необходимые библиотеки.

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