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

有人能告诉我如何创建一个静态库从一个。Cpp 和 a。Hpp 文件?是否需要创建。还有。啊?我还想知道如何编译一个静态库,并在其他地方使用它。Cpp 代码。我有 header.cppheader.hpp .我想创建 header.a。在 test.cpp中测试 header.a。我使用 g + + 进行编译。

161929 次浏览

创建一个.o 文件:

g++ -c header.cpp

add this file to a library, creating library if necessary:

ar rvs header.a header.o

使用图书馆:

g++ main.cpp header.a

您可以使用 ar实用程序创建一个 .a文件,如下所示:

ar crf lib/libHeader.a header.o

lib is a directory that contains all your libraries. it is good practice to organise your code this way and separate the code and the object files. Having everything in one directory generally looks ugly. The above line creates libHeader.a in the directory lib. So, in your current directory, do:

mkdir lib

Then run the above ar command.

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

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

The -L flag will get g++ to add the lib/ directory to the path. This way, g++ knows what directory to search when looking for libHeader. -llibHeader flags the specific library to link.

where test.o is created like so:

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

谁能告诉我 从.cpp 创建静态库 and a .hpp file? Do I need to create 这两个字母是什么意思?

是的。

创建. o (正常情况下) :

g++ -c header.cpp

创建存档 :

ar rvs header.a header.o

Test:

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

请注意,只包含一个模块的归档文件似乎没有什么意义。你也可以这么写:

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

尽管如此,我还是要让您相信您的实际用例有点复杂,有更多的模块。

Hope this helps!