为了方便起见,我在下面添加了相关的手册页。
我的(错误)理解首先:如果我需要用,
分隔选项,这意味着第二个-Wl
不是另一个选项,因为它在,
之前,这意味着它是-rpath
选项的参数。
我不明白-rpath
怎么会有一个-Wl,.
参数!
在我看来,这才是有意义的:
-Wl,-rpath .
这应该使用当前目录参数调用-rpath链接器选项。
曼恩海合会:
-Wl,选项
将选项作为选项传递给
链接器。如果选项包含逗号,则
在
逗号。您可以使用此语法
将参数传递给选项。为了
例如,
-Wl,-Map,output.map
通过-Map output.map
到链接器。什么时候?使用GNU链接器,您还可以
同样的效果
`-Wl,-Map=output.Map'。
男身份证:
-rpath=目录
将目录添加到
运行库搜索路径。这是
链接ELF可执行文件时使用
共享对象。全部-rpath
参数被连接并传递
到运行时链接器,后者使用它们
在运行时定位共享对象。
-rpath选项也用于
定位共享对象
共享对象显式需要
包含在链接中;
最佳答案
gcc的-Wl,xxx
选项将以逗号分隔的标记列表作为以空格分隔的参数列表传递给链接器。所以
gcc -Wl,aaa,bbb,ccc
最终成为链接器调用
ld aaa bbb ccc
在您的例子中,您想说“
ld -rpath .
”,所以您将其作为-Wl,-rpath,.
传递给gcc,或者,您可以指定-Wl
的重复实例:gcc -Wl,aaa -Wl,bbb -Wl,ccc
注意
aaa
和第二个-Wl
之间没有逗号。或者,在你的情况下,
-Wl,-rpath -Wl,.
。关于gcc - 我不明白-Wl,-rpath -Wl,,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41455979/