将/ usr / local / lib永久添加到g ++库搜索路径

时间:2016-10-05 12:28:44

标签: c++ linux gcc linker

我想让g ++链接器(ld)从目录/usr/local/lib开始搜索库。如何将/usr/local/lib永久添加到链接器的搜索路径?

问题是我正在尝试将库 libboost_program_options.a 链接到我的源代码。该库有两个副本,一个在/usr/lib/x86_64-linux-gnu/,另一个在/usr/local/lib。如何使链接器首先查看/usr/local/lib并选择而不是另一个?

我系统上ldconfig -v 2>/dev/null | grep -v ^$'\t'的输出:

/usr/lib/x86_64-linux-gnu/libfakeroot:
/lib/i386-linux-gnu:
/usr/lib/i386-linux-gnu:
/usr/local/lib:
/lib/x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu:
/usr/lib/x86_64-linux-gnu/mesa-egl:
/usr/lib/nvidia-304:
/usr/lib32/nvidia-304:
/lib32:
/usr/lib32:
/lib:
/usr/lib:
/usr/lib/nvidia-304/tls: (hwcap: 0x8000000000000000)
/usr/lib32/nvidia-304/tls: (hwcap: 0x8000000000000000)

ld --verbose | grep SEARCH_DIR | tr -s ' ;' \\012

的输出
SEARCH_DIR("=/usr/x86_64-linux-gnu/lib64")
SEARCH_DIR("=/usr/local/lib/x86_64-linux-gnu")
SEARCH_DIR("=/usr/local/lib64")
SEARCH_DIR("=/lib/x86_64-linux-gnu")
SEARCH_DIR("=/lib64")
SEARCH_DIR("=/usr/lib/x86_64-linux-gnu")
SEARCH_DIR("=/usr/lib64")
SEARCH_DIR("=/usr/x86_64-linux-gnu/lib")
SEARCH_DIR("=/usr/local/lib")
SEARCH_DIR("=/lib")
SEARCH_DIR("=/usr/lib")

1 个答案:

答案 0 :(得分:1)

搜索路径在编译期间使用的链接描述文件中指定。运行gcc -v foo.c以执行链接并查看使用的链接描述文件。就我而言,它是/usr/lib/ldscripts/elf_x86_64.x。在该链接描述文件中,您将找到SEARCH_DIR指令。将其更新为包含/usr/local/lib

请注意,ldconfigld.so.conf.d仅在运行时使用。