2016-03-15 66 views
0

如何将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 

,但它不工作。

回答

1

很简单:你不能。

当你创建一个静态库时,你不能“链接”其他库,静态库只不过是一个收集对象文件的归档文件,实际上你并没有使用链接器来创建一个静态库。命令ar和文件名后缀.a全部代表“存档”。

如果您有一个静态库依赖于另一个静态库,那么您需要为其他库创建最终可执行文件(或动态库)。

+1

公平地说,你可以。正如你所说的,.a只是一个存档,你可以把两个档案合并成一个... –

相关问题