GNU ld не может найти библиотеку, которая является там

Пакеты, с которыми я играю здесь, довольно неизвестны, но тем не менее проблема довольно универсальна. В основном я пытаюсь скомпилировать модуль Python (названный rql) с расширением C++. Расширение использует внешнюю платформу, названную gecode, который содержит несколько библиотек. Я скомпилировал gecode и установил локально. Теперь, позвольте выводу выступить за себя:

red@devel:~/build/rql-0.23.3$ echo $LD_LIBRARY_PATH
/home/red/usr/lib
red@devel:~/build/rql-0.23.3$ ls $LD_LIBRARY_PATH | grep libgecodeint 
libgecodeint.so
libgecodeint.so.22
libgecodeint.so.22.0
red@devel:~/build/rql-0.23.3$ python setup.py build
running build
running build.py
package init file './test/__init__.py' not found (or not a regular file)
running build_ext
building 'rql_solve' extension
g++ -pthread -shared build/temp.linux-i686-2.5/gecode-solver.o -lgecodeint -lgecodekernel -lgecodesearch -o build/lib.linux-i686-2.5/rql_solve.so
/usr/bin/ld: cannot find -lgecodeint
collect2: ld returned 1 exit status
error: command 'g++' failed with exit status 1
8
задан Red 10 July 2010 в 23:12
поделиться

2 ответа

LD_LIBRARY_PATH предназначен для компоновщика / загрузчика времени выполнения (того же эффекта можно добиться с помощью ldconfig ). Вам нужен флаг -L :

-L/home/red/usr/lib

в командной строке компилятора.

Изменить:

И - спасибо @bjg за напоминание - вы можете использовать LIBRARY_PATH , если не хотите связываться с параметрами компилятора.

13
ответ дан 5 December 2019 в 12:07
поделиться

Очевидно, вы изменили LD_LIBRARY_PATH , чтобы указать на нестандартное расположение в вашем домашнем каталоге. Знаете ли вы, соответствует ли LD_LIBRARY_PATH в среде, используемой для вызова g ++ в setup.py среде вашей оболочки?

Посмотрите, можете ли вы передать аргументы в setup.py для изменения библиотеки путь или просто передайте -L / home / red / usr / lib в g ++.

1
ответ дан 5 December 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: