将GMP添加到自己的库中
问题描述:
如何将GMP添加到我的静态库中?将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
全部代表“存档”。
如果您有一个静态库依赖于另一个静态库,那么您需要为其他库创建最终可执行文件(或动态库)。
公平地说,你可以。正如你所说的,.a只是一个存档,你可以把两个档案合并成一个... –