如何使用 g++ 创建静态库

How to create a static library with g++?

本文关键字:静态 创建 g++ 何使用      更新时间:2023-10-16

有人可以告诉我如何从.cpp和.hpp文件创建静态库吗?我需要创建 .o 和 .a 吗?我还想知道如何在其他.cpp代码中编译静态库并将其用于。我有header.cppheader.hpp .我想创建header.a。在 test.cpp 中测试标头.a 。我正在使用 g++ 进行编译。

创建一个 .o 文件:

g++ -c header.cpp

将此文件添加到库中,必要时创建库:

ar rvs header.a header.o

使用库:

g++ main.cpp header.a
您可以使用

ar实用程序创建.a文件,如下所示:

ar crf lib/libHeader.a header.o

lib 是一个包含所有库的目录。 最好以这种方式组织代码并将代码和目标文件分开。将所有内容放在一个目录中通常看起来很丑陋。上面的行在目录lib中创建libHeader.a。因此,在当前目录中,执行以下操作:

mkdir lib

然后运行上述ar命令。

链接所有库时,您可以这样做:

g++ test.o -L./lib -lHeader -o test  

-L标志将获得g++,以将lib/目录添加到路径。这样,g++就知道在查找时要搜索的目录libHeader-llibHeader标记要链接的特定库。

其中 test.o 是这样创建的:

g++ -c test.cpp -o test.o 

有人可以告诉我如何 从.cpp创建静态库 和 .hpp 文件?我需要创建吗 .o 和 .a?

是的。

创建 .o(按照正常):

g++ -c header.cpp

创建存档

ar rvs header.a header.o

测试

g++ test.cpp header.a -o executable_name

请注意,仅包含一个模块的存档似乎有点毫无意义。你可以很容易地写:

g++ test.cpp header.cpp -o executable_name

不过,我会给你一个好处,怀疑你的实际用例有点复杂,有更多的模块。

希望这有帮助!