Linux LD_LIBRARY
Динамически подключаемые библиотеки для поиска
linux添加动态链接库搜索路径
第一种是修改系统文件:
在 /etc/ld.so.conf 文件中指定了默认的动态链接库查找路径,我的
/etc/ld.so.conf 文件内容是这样的
include /etc/ld.so.conf.d/*.conf
也就是说它间接的指定了定义路径的文件,我们只需要把需要的路径加到/etc/ld.so.conf.d目录下的任何一个文件中,再运行ldconfig就可以了,但为了容易理解,最好是找一个相关的文件,或者重新建立一个文件,把需要添加的路径写入然后运行ldconfig
第二种是运用变量LD_LIBRARY_PATH:
把需要添加的路径加入到LD_LIBRARY_PATH中,注意如果多于一个要用冒号隔开。如:
export LD_LIBRARY_PATH=/usr/local/lib/minigui
第三种是编译的时候设定:
在编译源码的时候可以用参数:-Wl, -rpath指定动态搜索的路径即可。
еще
export LD_PRELOAD=$SNAP/usr/lib/bindtextdomain.so
Autotools (также известной под названием GNU Build System). Если вы когда-нибудь собирали программу при помощи волшебной последовательности команд ./configure && make && sudo make install, значит вы использовали Autotools.
Из недостатков Autotools, как вы и сами скоро убедитесь, можно отметить использование довольно стремного синтаксиса. Именно поэтому в третьем тысячелетии, вообще-то говоря, лучше использовать какой-нибудь CMake.
Autotools содержит в себе три важных компонента:
Autoscan — эта штука сканирует код проекта и выдает на выходе заготовку для будущего файла configure.ac.
Autoconf — генерирует из написанного программистом файла configure.ac портабельный скрипт configure, запускаемый при сборке проекта.
Automake — помогает в генерации Makefile при запуске скрипта configure. На вход Automake принимает написанный программистом файл Makefile.am, а на выходе выдает Makefile.in, который затем используется configure для генерации мейкфайла.
Разумеется, есть множество не менее важных компонентов, но обычно почему-то выделяют именно эти три. Если пока что не очень понятно, не переживайте. Давайте рассмотрим пример, и все сразу станет ясно.
Autotools по дэфолту ничего не ищет в /usr/local/include
Решить эту проблему можно несколькими способами. Например, можно дописать в configure.ac перед AC_CHEK_HEADER и AC_CHECK_LIB что-то вроде:
CFLAGS="$CFLAGS -I/usr/local/include"
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
Некоторые делают так, а кто-то считает, что все переменные окружения нужно выставить вручную при запуске configure.
2) Для поиска зависимостей в autotools следует использовать pkgconfig - тогда нет необходимости вручную менять {C{XX,},LD}FLAGS
linux添加动态链接库搜索路径
第一种是修改系统文件:
在 /etc/ld.so.conf 文件中指定了默认的动态链接库查找路径,我的
/etc/ld.so.conf 文件内容是这样的
include /etc/ld.so.conf.d/*.conf
也就是说它间接的指定了定义路径的文件,我们只需要把需要的路径加到/etc/ld.so.conf.d目录下的任何一个文件中,再运行ldconfig就可以了,但为了容易理解,最好是找一个相关的文件,或者重新建立一个文件,把需要添加的路径写入然后运行ldconfig
第二种是运用变量LD_LIBRARY_PATH:
把需要添加的路径加入到LD_LIBRARY_PATH中,注意如果多于一个要用冒号隔开。如:
export LD_LIBRARY_PATH=/usr/local/lib/minigui
第三种是编译的时候设定:
在编译源码的时候可以用参数:-Wl, -rpath指定动态搜索的路径即可。
еще
export LD_PRELOAD=$SNAP/usr/lib/bindtextdomain.so
Autotools (также известной под названием GNU Build System). Если вы когда-нибудь собирали программу при помощи волшебной последовательности команд ./configure && make && sudo make install, значит вы использовали Autotools.
Из недостатков Autotools, как вы и сами скоро убедитесь, можно отметить использование довольно стремного синтаксиса. Именно поэтому в третьем тысячелетии, вообще-то говоря, лучше использовать какой-нибудь CMake.
Autotools содержит в себе три важных компонента:
Autoscan — эта штука сканирует код проекта и выдает на выходе заготовку для будущего файла configure.ac.
Autoconf — генерирует из написанного программистом файла configure.ac портабельный скрипт configure, запускаемый при сборке проекта.
Automake — помогает в генерации Makefile при запуске скрипта configure. На вход Automake принимает написанный программистом файл Makefile.am, а на выходе выдает Makefile.in, который затем используется configure для генерации мейкфайла.
Разумеется, есть множество не менее важных компонентов, но обычно почему-то выделяют именно эти три. Если пока что не очень понятно, не переживайте. Давайте рассмотрим пример, и все сразу станет ясно.
Autotools по дэфолту ничего не ищет в /usr/local/include
Решить эту проблему можно несколькими способами. Например, можно дописать в configure.ac перед AC_CHEK_HEADER и AC_CHECK_LIB что-то вроде:
CFLAGS="$CFLAGS -I/usr/local/include"
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
LDFLAGS="$LDFLAGS -L/usr/local/lib"
Некоторые делают так, а кто-то считает, что все переменные окружения нужно выставить вручную при запуске configure.
2) Для поиска зависимостей в autotools следует использовать pkgconfig - тогда нет необходимости вручную менять {C{XX,},LD}FLAGS
Комментарии
Отправить комментарий