如何将 GMP 添加到我的静态库?
在 MyLib.h 中我有
#include<gmp.h>
#include<gmpxx.h>
还有一些函数,比如:
void fun(mpz_t &a, mpz_t b){
mpz_add(a,a,b);
}
我创建的静态库
gcc -std-c++11 -c mbib.c -o mbib.o
ar rcs libmbib.a mbib.o
我已经链接了 mbib.o,当我不使用那里的函数时,它可以工作。但是当我尝试使用它们中的任何一个时,我有:
/home/MBIB/libmbib.a(mbib.o):-1: In function `__gmp_binary_plus::eval(__mpz_struct*, __mpz_struct const*, __mpz_struct const*)':
mbib.cpp:-1: error: undefined reference to `__gmpz_add'
/home/MBIB/libmbib.a(mbib.o):-1: In function `__gmp_binary_multiplies::eval(__mpz_struct*, __mpz_struct const*, long)':
mbib.cpp:-1: error: undefined reference to `__gmpz_mul_si'
我试过添加
LIBS += -L[path] -lgmp -lgmpxx
但它不起作用。
最佳答案
很简单:你不能。
你不能,因为你在创建静态库时没有与其他库“链接”,静态库只不过是一个收集目标文件的存档,你实际上并没有使用链接器来创建静态库图书馆。命令ar
和文件名后缀.a
都是“archive”的意思。
如果您有一个依赖于另一个静态库的静态库,那么您还需要为最终的可执行文件(或动态库)构建另一个库。
关于c++ - 将 GMP 添加到自己的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36013865/