使用/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
?
答案 0 :(得分:6)
finalHandler
参数适用于静态库和共享库,但要求指定库的文件名采用特定格式。即,-l
告诉链接器查找名为-lfoo
或libfoo.a
的文件。如果你想链接一个文件名不具备这个' lib'前缀(即例如libfoo.so
),您可以使用分号并指定文件名:foo.so
。
因此,要动态链接-l:foo.so
和/my/dir/path/foo.so
,您需要发出以下命令:
/my/dir/path/bar.so
对于g++ -L/my/dir/path/ -l:foo.so -l:bar.so
,它具有-rpath
格式,因此为了将其传递给链接,您需要解决以下问题:
-rpath=<path>