2013-09-05 2 views
0

У меня есть libcommon.so в каталоге/usr/local/lib, и я связываю эту библиотеку с моей программой./usr/bin/ld: не удается найти общую библиотеку

GCC -o тест test_prog.c -L/USR/местные/Библиотека -llibcommon.so

и я попытался это тоже

GCC -o тест test_prog.c -L/USR/местные/Библиотека -llibcommon

Это дает

/USR/бен/л.д.: не может найти -llibcommon.so
collect2: л.д. возвращается 1 выход статус

Он есть:

$ locate libcommon.so 
/usr/local/lib/libcommon.so 
/usr/local/lib/libcommon.so.0 
/usr/local/lib/libcommon.so.0.1.0 
$ 

ответ

6

При использовании -l, необходимо указать только на «базовом» имя библиотеки:

-lcommon 

Это будет отслеживать libcommon.so в какой-нибудь каталог.

Вы сказали компилятору, чтобы найти liblibcommon.so.soliblibcommon.so), и он, вероятно, не мог ... действительно, вы бы не задали вопрос, мог ли он это сделать.

Некоторые программы GNU построить библиотеку libiberty.so (или его эквивалент), поэтому ссылка линии, используя ссылку библиотеки с:

-liberty 

(что смешно, GNU действительно скорее это было +liberty, но .. вы не можете все исправить).

+0

я получаю это после того, как изменения в соответствии с Вами/USR/местные/Библиотека /libcommon.so.0: не мог читать символы: Недопустимая операция collect2: л.д. возвращается статус 1 выхода – user2732944

+0

Теперь у вас другая проблема. Линкер находит библиотеку, но не может понять, что в ней. Я предлагаю начать с запуска 'file /usr/lib/libcommon.so/lib/libc.so' и посмотреть, есть ли очевидная разница между типами файлов. Возможно, вам придется следовать символическим ссылкам (поэтому вам может потребоваться указать другие имена в командной строке 'file'. Если есть большая разница, возможно, вы установили неверный файл (ы) - или, возможно, системный администратор сделал это , –

1

Используйте -lcommon переключатель при подключении libcommon.so

0

попробовать экспортировать LD_LIBRARY_PATH указывает на каталог, в котором хранятся файлы так.

экспорт LD_LIBRARY_PATH =/pathofdirectorywheresofilesarekept

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