Вам нужно больше, чем библиотеки, чтобы иметь возможность компилировать код с использованием этих библиотек.(Я предполагаю, что здесь Linux, вещи могут немного отличаться, например, в OSX, BSD, Cygwin, Mingw ..)
Библиотеки
Для разработки вам понадобятся эти 3 вещи, когда ваш код используетбиблиотека:
- Заголовочные файлы библиотеки, файлы .h
- Файлы разработки библиотеки, libXXX.so или libXXX.a, обычно
- Файлы времени выполнения библиотеки, libXXX.so.Y, где Y - номер версии.Они не нужны, если вы статически создаете ссылки в библиотеке.
Кажется, вам не хватает файлов заголовков (?) Добавьте их на свою флешку, например, в / media / include
Development
- Используйте (например) флаг компилятора
-I/media/include
при компиляции исходного кода для ссылки на нестандартное расположение заголовочных файлов. - Используйте флаг компилятора / компоновщика
-L/media/lib
для обозначения нестандартного расположения библиотек.
Возможно, вам не хватает первого шага.
Запуск
Для динамически связанных библиотек система будетзагружайте их только из местоположений по умолчанию, обычно это / lib /, / usr / lib /
Изучите инструмент ldd
, чтобы помочь отладить этот шаг.
Вы должны указать системе, куда загружатьдополнительные библиотеки, когда вы запускаете программу, вот 3 варианта:
- для всей системы: отредактируйте /etc/ld.so.conf и добавьте туда / media / libs.Запустите
ldconfig -a
впоследствии. - Локально, только для текущей оболочки.установите переменную среды LD_LIBRARY_PATH для ссылки на / media / lib, запустите
export LD_LIBRARY_PATH=/media/lib
- Исполняемый файл: Жесткий код нестандартного пути к библиотеке в исполняемом файле.Вы добавляете это к шагу связывания при создании вашего исполняемого файла:
-Wl,-rpath,/media/lib
И т. Д.
Могут быть и другие причины, по которым вещи не работают, если так, покажите нам выводиз ls -l / media / libs и куда вы помещаете файлы заголовков библиотеки, командную строку, которую вы используете для компиляции / компоновки, и точные ошибки, которые вы получаете.
- Отсутствуют заголовки и / илибиблиотеки разработки (для динамических библиотек обычно есть символическая ссылка от libXXX.so к libXXX.so.Y, компоновщику нужен libXXX.so, он не будет смотреть непосредственно на libXXX.so.Y)
- использование библиотек, несовместимых с вашей текущей ОС / архитектурой.(библиотеки, скомпилированные на одном дистрибутиве Linux, часто несовместимы с другим дистрибутивом или даже с другой минорной версией того же дистрибутива)
- При использовании USB-флешки с файловой системой FAT32 у вас возникнут проблемы с символическими ссылками.