Ld не может найти -l <library>

У меня возникли проблемы с установкой pyipopt на ubuntu 12.04. При связывании я получаю сообщение об ошибке:

/usr/bin/ld: cannot find -lcoinhsl

Хотя я знаю, что эта библиотека установлена, а файлы .so и .la доступны в /home/mostafa/MyBuilds/CoinIpopt/build/lib/

У кого-нибудь есть решение для этого?

ниже приведен полный возврат запуска setup.py build:

[email protected]:~/MyBuilds/pyipopt# sudo python setup.py build
running build
running build_ext
building 'pyipopt' extension
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/home/mostafa/MyBuilds/CoinIpopt/build/include/coin/ -I/usr/include/python2.7 -c src/callback.c -o build/temp.linux-x86_64-2.7/src/callback.o
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/home/mostafa/MyBuilds/CoinIpopt/build/include/coin/ -I/usr/include/python2.7 -c src/pyipopt.c -o build/temp.linux-x86_64-2.7/src/pyipopt.o
src/pyipopt.c: In function ‘set_intermediate_callback’:
src/pyipopt.c:452:15: warning: variable ‘myowndata’ set but not used [-Wunused-but-set-variable]
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relrobuild/temp.linux-x86_64-2.7/src/callback.o build/temp.linux-x86_64-2.7/src/pyipopt.o -L/home/mostafa/MyBuilds/CoinIpopt/build/lib/ -lipopt -lblas -lcoinhsl -lcoinmetis -llapack -ldl -lm -o build/lib.linux-x86_64-2.7/pyipopt.so -Wl,--rpath -Wl,/home/mostafa/MyBuilds/CoinIpopt/build/lib/
/usr/bin/ld: cannot find -lcoinhsl
collect2: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

Ответы

Ответ 1

-Ldir
    Добавить каталог каталога в список каталогов для поиска -l.

Ответ 2

Вы можете установить свою библиотеку coinhsl в один из ваших стандартных библиотек библиотек и запустить 'ldconfig`, прежде чем выполнять установку ppyipopopt

Ответ 3

У меня была аналогичная проблема с другой библиотекой, и причина, по которой она ее не обнаружила, заключалась в том, что я не запускал make install (после запуска. /configure и make) для этой библиотеки. Для установки make могут потребоваться права root (в этом случае используйте: sudo make install). После запуска make install у вас должны быть такие файлы в правильной папке, то есть здесь /usr/local/lib, а не в указанной вами папке.

Ответ 4

вы можете добавить Path to coinhsl lib в переменную LD_LIBRARY_PATH. Может быть, это поможет.

export LD_LIBRARY_PATH=/xx/yy/zz:$LD_LIBRARY_PATH

где /xx/yy/zz представляет путь к coinhsl lib.