如何使用系统库创建静态库?
How create static library using system libraries?
我使用 ntl
库编写了一个简单的 C++
程序。我尝试从我的程序创建一个静态库。我使用了这些命令:
g++ -Wall -g -c base.cpp -o base.o
ar rcs libMyStaticLib.a *.o
libMyStaticLib.a
创建成功。但是当我在另一个项目中使用 libMyStaticLib.a
时,我得到了这些错误:
g++ -o main.out main.cpp -lMyStaticLib
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libMyStaticLib.a(base.o): In function `NTL::Vec<NTL::GF2>::~Vec()':
/usr/local/include/NTL/vec_GF2.h:43: undefined reference to `NTL::WordVector::~WordVector()'
我的main.cpp
#include <iostream>
#include </home/Qwer/test/base.h>
int main()
{
baseInit();
return 0;
}
我在创建静态库时尝试linkntl
库
ar rcs libMyStaticLib.a *.o -lntl
但是我得到这个错误:
ar: two different operation options specified
我想尝试静态库并在另一个项目中使用它。我该怎么办?
静态库只不过是 archives(这是 ar
程序创建的,.a
后缀代表)目标文件。链接静态库就像链接存档中的对象文件。
这就是为什么您的静态库所依赖的所有其他库也必须链接的原因:
$ g++ -o main.out main.cpp -lMyStaticLib -lntl
我使用 ntl
库编写了一个简单的 C++
程序。我尝试从我的程序创建一个静态库。我使用了这些命令:
g++ -Wall -g -c base.cpp -o base.o
ar rcs libMyStaticLib.a *.o
libMyStaticLib.a
创建成功。但是当我在另一个项目中使用 libMyStaticLib.a
时,我得到了这些错误:
g++ -o main.out main.cpp -lMyStaticLib
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libMyStaticLib.a(base.o): In function `NTL::Vec<NTL::GF2>::~Vec()':
/usr/local/include/NTL/vec_GF2.h:43: undefined reference to `NTL::WordVector::~WordVector()'
我的main.cpp
#include <iostream>
#include </home/Qwer/test/base.h>
int main()
{
baseInit();
return 0;
}
我在创建静态库时尝试linkntl
库
ar rcs libMyStaticLib.a *.o -lntl
但是我得到这个错误:
ar: two different operation options specified
我想尝试静态库并在另一个项目中使用它。我该怎么办?
静态库只不过是 archives(这是 ar
程序创建的,.a
后缀代表)目标文件。链接静态库就像链接存档中的对象文件。
这就是为什么您的静态库所依赖的所有其他库也必须链接的原因:
$ g++ -o main.out main.cpp -lMyStaticLib -lntl