построение кода из исходного кода и добавление их к вашему пути

Обычно на Debian, когда вы устанавливаете вещи из репозитория, они просто работают. Он устанавливает вещи просто прекрасно, и жизнь хороша. Это отлично подходит для вещей, которые обновляются в репозитории.

Я создаю некоторые инструменты, которые я бы хотел обновить вручную из github или mercurial.

использование cmake или скрипта configure для создания кода в порядке, я также добавляю свой собственный префиксный путь, чтобы я мог легко удалить или обновить пакеты, если это необходимо.

Я просто создаю SDL2 из mercurial и устанавливаю его в / opt / SDL2 и добавляю это к своему пути. Я должен был сделать это, чтобы иметь возможность создавать SDL_image

который дал мне этот результат после завершения его процесса.

Libraries have been installed in: /opt/SDL_IMAGE/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. 

Этот вывод выше говорит много, и я не совсем уверен, как его разобрать. Раньше я использовал mac, который упрощал много всего этого, но на Linux у меня были проблемы.

Мое понимание от чтения этого выше кода заключается в том, что я должен добавить что-то подобное в мой файл bashrc.

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/SDL_IMAGE/lib export LD_RUN_PATH=$LD_RUN_PATH:/opt/SDL_IMAGE/lib 

к моему bashrc, так что, когда я связываюсь с заголовками изображений sdl, он найдет его? Я просмотрел страницы man для ld, но, честно говоря, я не понимаю, и поэтому я спрашиваю.

Особенно эта строка: используйте флаг компоновщика `-Wl, -rpath -Wl, LIBDIR '

One Solution collect form web for “построение кода из исходного кода и добавление их к вашему пути”

Xcode и Fink | Homebrew | MacPorts на Mac OS X имеют эти сложности (они просто скрывают это от вас). Для этой проблемы есть два аспекта: компиляция и запуск. Для компиляции потребуется множество деталей для любой библиотеки, установленной на пользовательский путь. Эта информация для некоторых библиотек может быть предоставлена pkg-config , например, для небольшого склада программного обеспечения, которое я поддерживаю в своем домашнем каталоге:

 $ ls ~/usr/rhel6-x86_64/lib/pkgconfig/ goptfoo.pc jkiss.pc libsodium.pc $ echo $PKG_CONFIG_PATH /homes/jdoe/usr/rhel6-x86_64/lib/pkgconfig $ pkg-config --libs --cflags libsodium -I/homes/jdoe/usr/rhel6-x86_64/include -L/homes/jdoe/usr/rhel6-x86_64/lib -lsodium $ 

Эти магические строки должны передаваться в процесс компиляции для любого программного обеспечения, которое создается против библиотек в вашем настраиваемом дереве установки. Детали будут зависеть от того, являются ли Makefile или autotools или cmake или так далее. Один простой способ – установить CFLAGS для размещения вывода pkg-config или просто включить вывод в строку сборки:

 mkpwhash: mkpwhash.c gcc -std=gnu99 `pkg-config --cflags --libs libsodium` -lcrypt -Werror -Wall -Wextra -Wundef -ftrapv -fstack-protector-all -pedantic -pipe -o mkpwhash mkpwhash.c 

Для autotools или cmake вам нужно будет копаться, чтобы посмотреть, как они прикрепляют этот конкретный лук к поясу, например, изучать существующие configure.ac configure.ac из пакетов, которые используют autotools и т. Д.

Для запуска того, что было скомпилировано для использования разделяемой библиотеки из пользовательского пути, достаточно установить LD_LIBRARY_PATH (или в общесистемной ld.so.conf с ld.so.conf ):

 $ unset LD_LIBRARY_PATH $ ldd ~/usr/rhel6-x86_64/bin/mkpwhash | grep sodium libsodium.so.13 => not found $ exec $SHELL $ echo $LD_LIBRARY_PATH /homes/jdoe/usr/rhel6-x86_64/lib $ ldd ~/usr/rhel6-x86_64/bin/mkpwhash | grep sodium libsodium.so.13 => /homes/jdoe/usr/rhel6-x86_64/lib/libsodium.so.13 (0x00007e5c12ca7000) $ 

(Это unix, есть несколько способов отшелушивать Bos grunniens , следовательно, «по крайней мере один из …» советов из вашего процесса сборки. Более сложные программные базы, скорее всего, будут использовать stow или подобные, в зависимости от того, сколько веревок ( и, таким образом, головные боли), которые вы хотите дать себе.)

  • перенаправить приложение на локальный хост на прослушивание внешнего интерфейса / альтернатив bindp (libindp.so)
  • prelink - странная массовая модификация после установки zabbix-agent
  • Использование флагов компиляции gcc
  • Как запустить ld в скрипте с меньшим размером памяти?
  • Каково значение по умолчанию LD_LIBRARY_PATH?
  • LD для детерминированной загрузки программных и общих объектов?
  • В порядке ли сортировка /etc/ld.so.conf
  • Где получить файл «/etc/ld.so.nohwcap»?
  • Почему ldd не показывает пути имен файлов для зависимостей?
  • Linux и Unix - лучшая ОС в мире.