对于 /my/dir/path/foo.a 和 /my/dir/path/bar.a:
要使用 gcc/g++ 静态链接,可以使用-L
指定包含静态库的目录和-l
指定库的名称。在这种情况下,人们会写gcc -L/my/dir/path -lfoo -lbar ...
.
使用 /my/dir/path/foo.so 和 /my/dir/path/bar.so:
要使用 gcc/g++ 动态链接,可以使用-Wl,-rpath,/my/dir/path
。库的名称是如何指定的?是命令gcc -L/my/dir/path -Wl,-rpath,/my/dir/path -lfoo -lbar ...
正确的?或者应该是gcc -L/my/dir/path -Wl,-rpath,/my/dir/path -Wl,-lfoo -Wl,-lbar ...
?换句话说,库名称是否需要通过以下方式传递给链接器:-Wl,-l
?
The -l
参数适用于静态库和共享库,但期望指定库的文件名采用特定格式。即,-lfoo
告诉链接器寻找名为的文件libfoo.a
or libfoo.so
。如果您想链接到文件名没有此“lib”前缀的库(即foo.so
),您可以使用分号并指定文件名:-l:foo.so
.
因此,要动态链接/my/dir/path/foo.so
and /my/dir/path/bar.so
您需要发出以下命令:
g++ -L/my/dir/path/ -l:foo.so -l:bar.so
As for -rpath
,它有-rpath=<path>
格式,因此为了将其传递给链接,您需要执行以下操作:
g++ -L/my/dir/path/ -Wl,-rpath=/my/dir/path/ -l:foo.so -l:bar.so
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)