我有一个基于 linux 的操作系统,其中有很多编译为静态库的系统库。
如何在我的应用程序中使用这些库,并将它们链接到我的最终二进制文件?
您可以像使用共享库一样使用它们,除了静态链接。GCC 简介 - 共享库和静态库文章将帮助您入门。
我很难理解。如果你正在链接类似的东西
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-group
and--end-group
选项标记需要的库一起考虑。