伙计们,您能在 unix 上描述一些关于 c++ 构建 block 的事情吗?
我想创建一个链接到静态库和动态库 (.so) 的应用程序。
问题 1: 如何使用 gcc/g++ 创建静态库?如何让我的应用链接到它。
问题2: 如何在makefile中指定它,链接静态和动态库,假设两个库都有头文件
总结:多年来我一直在使用由其他人编写的 makefile 和库。因此,每次修改它,我只是简单地剪切和粘贴周围的东西,并没有真正理解它。现在我想深入了解构建/链接/创建 Makfile 的过程。
哪本好书详细地描述了这些概念?
谢谢
最佳答案
静态库通常使用 ar
命令归档。一旦你构建了所有的目标文件(最好使用 GCC 上的 -fPIC
开关),你可以像这样运行 ar
:
ar -rs archivename.a list.o of.o objects.o
man
页面描述了选项。
动态库通常使用 -shared
切换到 gcc
或 ld
以及带有 .so 的输出文件名来构建
扩展名。
Autotools 使用 libtool
程序来处理这个问题。我不熟悉它的用途。
可以通过使用 -l
(ell) 开关(例如 -lX
来链接到 libX. so
)或直接用绝对路径指定它们(例如将 /usr/lib/libX.so
添加到您的命令中)。通过在 -l
之前指定 -static
或 .a
存档的适当绝对路径来链接静态库。
关于c++ - 创建项目,从 Makefile 到 UNIX 中的静态/动态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/598948/