0

我有一个基于 linux 的操作系统,其中有很多编译为静态库的系统库。

如何在我的应用程序中使用这些库,并将它们链接到我的最终二进制文件?

4

2 回答 2

2

您可以像使用共享库一样使用它们,除了静态链接。GCC 简介 - 共享库和静态库文章将帮助您入门。

于 2012-10-02T12:58:30.663 回答
2

我很难理解。如果你正在链接类似的东西

g++ -o myprog myprog.o obj1.o obj2.o -L/path/to/lib -L/path2/to/lib -llib1 -llib2 -lib3

如果库路径中存在 liblib1.so(/path/to/lib、/path2/to/lib 以及一组系统特定目录),则通过 gcc 或 g++ 包装器调用的链接器将执行“正确的事情(tm)”系统库可能在哪里),它将被动态链接,如果不是 liblib1.a 将被静态链接。唯一需要注意的是,如果静态库中存在相互依赖关系(lib1需要lib2,lib2需要lib1),可能需要重复几次或者使用ld的--start-groupand--end-group选项标记需要的库一起考虑。

于 2012-10-02T13:22:58.200 回答