繁体   English   中英

在Linux中编译/链接多个C ++库

[英]Compiling/Linking multiple c++ libraries in linux

我有3个独立的库,没有依赖关系,互斥互斥,使用g ++ -c进行单独编译,然后使用ar rvs *.o单独添加到单独的归档文件中。

我现在有3个单独的档案。

现在,我还有另一个第四库,该库依赖于所有之前的三个库。 如何编译我的第4个库以包括其他3个专有库,以便在main.cpp程序中使用所有第4个库(仅引用第4个库)?

我是一个g ++ / linux / makefile完整初学者。

第四个库是静态库还是动态库?

前三个库是静态库,它们不过是目标文件的存档。 如果第四个库就是那个库,那么您无需执行任何操作,只需创建存档即可。

问题是与第四个库链接时。 由于静态库只不过是目标文件的存档,因此您需要链接所有四个库。 您还需要在链接器的命令行上正确放置库:如果库A依赖于库B,则在链接器命令行上,A必须先于 B。

另一方面,如果第四个库是共享库,则它与可执行程序的链接非常相​​似,并且在这样做时,您将照常链接到所有需要的库。 然后,当使用共享库创建程序时,无需链接依赖项。


对于实际的命令行,最简单的方法是在链接时仅添加库:

$ g++ main.o -o my_program lib4.a lib3.a lib2.a lib1.a

上面的命令用于链接静态库,并在创建main.cpp源的目标文件之后。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM