2

我正在 Linux 上使用 Qt Creator 编写程序。它使用一个库,我在目录中同时拥有该库.so.a等价物/usr/lib,例如:

/usr/lib/libuseme.a

/usr/lib/libuseme.so

据我了解,如果我链接到.so,它将被动态链接,但如果我链接到 ,.a它将被静态链接。

在这种情况下,我想静态链接,让我有更好的机会以独立的方式分发我的程序。

但是-l链接器的选项只允许库名称,不包括lib指定的或扩展名 - 例如

-luseme

那么我如何表明我希望它(静态)链接到.a,而不是动态链接到.so

4

2 回答 2

1

那么我如何表明我希望它(静态)链接到.a,而不是动态链接到.so?

两种方式:

  • 使用完整库路径/usr/lib/libuseme.a而不是链接-luseme
  • 告诉链接器您想要存档副本:-Wl,-Bstatic -luseme -Wl,-Bdynamic
于 2013-07-13T05:00:12.137 回答
0

您可以使用 -static 强制静态链接。

但是,如果您不想与每个库进行静态链接,则可以将路径添加到库的 .a 文件中,以便与其余文件一起静态链接到命令。

于 2013-07-12T21:36:13.817 回答