Arhn - архитектура программирования

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

  • Экспортируется ли LD_LIBRARY_PATH в вашей среде? 11.07.2010
  • Является ли libgecodeint.so, который находится в вашем LD_LIBRARY_PATH, для правильной архитектуры (например, 32-битной или 64-битной в зависимости от ситуации)? 11.07.2010

Ответы:


1

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

-L/home/red/usr/lib

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

Редактировать:

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

10.07.2010
  • Да, я бы пометил его комментарий как ответ, если бы мог :) Немного странно, что ld все равно не смотрит в свой путь поиска во время выполнения, но проблема теперь решена, так что большое спасибо вам и другим здесь! 11.07.2010

  • 2

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

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

    10.07.2010
  • g++ будет использовать LIBRARY_PATH, если он присутствует, поэтому вы можете попробовать LIBRARY_PATH=/red/usr/lib python setup.py build 11.07.2010
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..