我正在尝试在Cygwin上编译这个简单的GMP程序:
#include <gmp.h>
int main(){
mpz_t i;
mpz_init(i);
}
以下是命令:
gcc -lgmp test.c
我收到了以下错误信息:
/tmp/ccJpGa7K.o:test.c:(.text+0x17): undefined reference to `__imp___gmpz_init'
/tmp/ccJpGa7K.o:test.c:(.text+0x17): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `__imp___gmpz_init'
collect2: error: ld returned 1 exit status
有什么想法出了问题吗?我知道它可以找到库(libgmp.dll.a),但似乎找不到函数。
nm /usr/lib/libgmp.dll.a | grep mpz_init
的输出:
0000000000000000 T __gmpz_inits
0000000000000000 I __imp___gmpz_inits
0000000000000000 T __gmpz_init_set_ui
0000000000000000 I __imp___gmpz_init_set_ui
0000000000000000 T __gmpz_init_set_str
0000000000000000 I __imp___gmpz_init_set_str
0000000000000000 T __gmpz_init_set_si
0000000000000000 I __imp___gmpz_init_set_si
0000000000000000 T __gmpz_init_set_d
0000000000000000 I __imp___gmpz_init_set_d
0000000000000000 T __gmpz_init_set
0000000000000000 I __imp___gmpz_init_set
0000000000000000 T __gmpz_init2
0000000000000000 I __imp___gmpz_init2
0000000000000000 T __gmpz_init
0000000000000000 I __imp___gmpz_init
我尝试了不用grep命令,但是里面的每个符号都出现了0地址,原因不明。