lin*_*uxx 93 c++ compiler-construction gcc g++
有人可以告诉我如何从.cpp和.hpp文件创建静态库吗?我需要创建.o和.a吗?我还想知道如何编译静态库并在其他.cpp代码中使用它.我有header.cpp
,header.hpp .
我想创造header.a
.测试header.a in test.cpp
.我正在使用g ++进行编译.
小智 100
创建.o文件:
g++ -c header.cpp
Run Code Online (Sandbox Code Playgroud)
将此文件添加到库中,必要时创建库:
ar rvs header.a header.o
Run Code Online (Sandbox Code Playgroud)
使用库:
g++ main.cpp header.a
Run Code Online (Sandbox Code Playgroud)
Sri*_*ram 38
您可以.a
使用该ar
实用程序创建文件,如下所示:
ar crf lib/libHeader.a header.o
Run Code Online (Sandbox Code Playgroud)
lib
是包含所有库的目录.最好以这种方式组织代码并分离代码和目标文件.将所有内容放在一个目录中通常看起来很丑.上面的行在libHeader.a
目录中创建lib
.因此,在当前目录中,执行:
mkdir lib
Run Code Online (Sandbox Code Playgroud)
然后运行上面的ar
命令.
链接所有库时,您可以这样做:
g++ test.o -L./lib -lHeader -o test
Run Code Online (Sandbox Code Playgroud)
该-L
标志将把目录g++
添加lib/
到路径中.这样,g++
知道在查找时要搜索的目录libHeader
.-llibHeader
标记要链接的特定库.
test.o的创建方式如下:
g++ -c test.cpp -o test.o
Run Code Online (Sandbox Code Playgroud)
Lig*_*ica 25
有人可以告诉我如何从.cpp和.hpp文件创建静态库吗?我需要创建.o和.a吗?
是.
创建.o(按照正常情况):
g++ -c header.cpp
Run Code Online (Sandbox Code Playgroud)
创建存档:
ar rvs header.a header.o
Run Code Online (Sandbox Code Playgroud)
测试:
g++ test.cpp header.a -o executable_name
Run Code Online (Sandbox Code Playgroud)
请注意,只使用一个模块进行存档似乎毫无意义.你可以很容易地写出来:
g++ test.cpp header.cpp -o executable_name
Run Code Online (Sandbox Code Playgroud)
尽管如此,我还是会怀疑您的实际用例有点复杂,模块更多.
希望这可以帮助!