我在Linux上使用Qt Creator编写程序。它使用一个库,我在.so
目录中有.a
和/usr/lib
等价物,例如:
/usr/lib/libuseme.a
/usr/lib/libuseme.so
根据我的理解,如果我链接到.so
,它会动态关联,但如果我链接到.a
,则会静态链接。
在这种情况下,我想静态链接,让我有更好的机会以自包含的方式分发我的程序。
但是链接器的-l
选项只允许指定库名,不包括lib
或扩展名 - 例如
-luseme
那么如何表明我希望它(静态地)链接到.a
,而不是动态链接到.so
?
答案 0 :(得分:1)
那么我如何表明我希望它(静态地)链接到.a,而不是动态地链接到.so?
两种方式:
/usr/lib/libuseme.a
而不是-luseme
-Wl,-Bstatic -luseme -Wl,-Bdynamic
答案 1 :(得分:0)
您可以使用-static强制静态链接。
但是,如果您不想静态链接每个库,则可以将库的.a文件的路径添加到该命令与其余文件的静态链接。