gcc - linking - linux shared library
ld no puede encontrar-l<biblioteca> (4)
Estoy teniendo problemas para instalar pyipopt en ubuntu 12.04. Durante el enlace, recibo el error:
/usr/bin/ld: cannot find -lcoinhsl
Aunque sé que esta biblioteca está instalada y los archivos .so y .la están disponibles en /home/mostafa/MyBuilds/CoinIpopt/build/lib/
¿Alguien tiene una solución para esto?
A continuación se muestra el retorno completo de la ejecución de setup.py build:
root@ubuntu:~/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
-Ldir
Agregue directorio dir a la lista de directorios para buscar -l.
Puede instalar su biblioteca coinhsl en uno de sus directorios de bibliotecas estándar y ejecutar ''ldconfig'' antes de realizar la instalación de ppyipopt
Tuve un problema similar con otra biblioteca y la razón por la que no lo encontró fue que no ejecuté make install (después de ejecutar ./configure and make) para esa biblioteca. La instalación de make puede requerir privilegios de root (en este caso use: sudo make install). Después de ejecutar make install, debe tener los archivos en la carpeta correcta, es decir, aquí / usr / local / lib y no en la carpeta mencionada por usted.
puede agregar la ruta a coinhsl lib a la variable LD_LIBRARY_PATH
. Puede ser que ayude.
export LD_LIBRARY_PATH=/xx/yy/zz:$LD_LIBRARY_PATH
donde /xx/yy/zz
representa la ruta a coinhsl
lib.