Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu g++;ld链接器在特定点停止在给定路径中搜索_Ubuntu_Linker_G++ - Fatal编程技术网

Ubuntu g++;ld链接器在特定点停止在给定路径中搜索

Ubuntu g++;ld链接器在特定点停止在给定路径中搜索,ubuntu,linker,g++,Ubuntu,Linker,G++,我运行以下命令(Ubuntu 18.04) 其中/mcr/lib包含libmat.so。 我得到以下输出(截断): 现在,我知道libboost\u chrono.so.1.56.0存在于/mcr/lib/中 find /mcr/lib/libboost_chrono.so.1.56.0 /mcr/lib/libboost_chrono.so.1.56.0 我不明白的是为什么ld在某个点停止在指定路径(-L/mcr/lib)中搜索库。如您所见,它在开始时确实在给定的路径中搜索,但随后就停止了

我运行以下命令(Ubuntu 18.04)

其中
/mcr/lib
包含
libmat.so
。 我得到以下输出(截断):

现在,我知道
libboost\u chrono.so.1.56.0
存在于
/mcr/lib/

find /mcr/lib/libboost_chrono.so.1.56.0
/mcr/lib/libboost_chrono.so.1.56.0
我不明白的是为什么
ld
在某个点停止在指定路径(
-L/mcr/lib
)中搜索库。如您所见,它在开始时确实在给定的路径中搜索,但随后就停止了


感谢您的帮助

仔细考虑一下警告信息。尝试使用-rpath或-rpath链接。链接器实际上是在告诉你该做什么..我看了这篇文章(),我解释它的方式-L是链接的一个重要部分,也是ld使用的一个;即使它与-rpath一起工作,我也想知道为什么它停止在特定路径中搜索此路径用于查找链接器链接的库。这不是为了找到它们的运行时依赖关系。所以链接器只在-l目录中查找用-l指定的库,而那些-l库所依赖的任何库都不会在-l目录中搜索?
...
libz.so.1 needed by /mcr/lib/libmx.so
attempt to open /mcr/lib/libz.so.1 failed
attempt to open /mcr/lib/../../sys/os/glnxa64/libz.so.1 failed
attempt to open //usr/lib/x86_64-linux-gnu/libfakeroot/libz.so.1 failed
attempt to open //usr/local/lib/libz.so.1 failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libz.so.1 failed
found libz.so.1 at //lib/x86_64-linux-gnu/libz.so.1
libaudit.so.1 needed by //lib/x86_64-linux-gnu/libpam.so.0
attempt to open //usr/lib/x86_64-linux-gnu/libfakeroot/libaudit.so.1 failed
attempt to open //usr/local/lib/libaudit.so.1 failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libaudit.so.1 failed
found libaudit.so.1 at //lib/x86_64-linux-gnu/libaudit.so.1
libboost_chrono.so.1.56.0 needed by /mcr/lib/libboost_log.so.1.56.0
attempt to open //usr/lib/x86_64-linux-gnu/libfakeroot/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0     failed
attempt to open //lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //lib32/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib32/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-gnu64/libboost_chrono.so.1.56.0     failed
attempt to open //usr/local/lib64/libboost_chrono.so.1.56.0 failed
attempt to open //lib64/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib64/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/libboost_chrono.so.1.56.0 failed
attempt to open //lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/x86_64-linux-gnu/lib64/libboost_chrono.so.1.56.0     failed
attempt to open //usr/x86_64-linux-gnu/lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-    gnu/libfakeroot/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0     failed
attempt to open //lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //lib32/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib32/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0     failed
attempt to open //lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/x86_64-linux-gnu64/libboost_chrono.so.1.56.0     failed
attempt to open //usr/local/lib64/libboost_chrono.so.1.56.0 failed
attempt to open //lib64/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib64/libboost_chrono.so.1.56.0 failed
attempt to open //usr/local/lib/libboost_chrono.so.1.56.0 failed
attempt to open //lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/lib/libboost_chrono.so.1.56.0 failed
attempt to open //usr/x86_64-linux-gnu/lib64/libboost_chrono.so.1.56.0     failed
attempt to open //usr/x86_64-linux-gnu/lib/libboost_chrono.so.1.56.0 failed
ld: warning: libboost_chrono.so.1.56.0, needed by     /mcr/lib/libboost_log.so.1.56.0, not found (try using -rpath or -rpath-link)
...
find /mcr/lib/libboost_chrono.so.1.56.0
/mcr/lib/libboost_chrono.so.1.56.0