gpt4 book ai didi

gcc - 对 `__imp___gmpz_init' 的 undefined reference ,在 Cygwin 上构建 GMP 程序

转载 作者:行者123 更新时间:2023-12-03 12:51:52 25 4
gpt4 key购买 nike

我正在尝试在 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。

最佳答案

这修复了它:gcc test.c -lgmp .我刚把 -lgmp最后的。这似乎是 Cygwin 特有的东西,我在 OS X 上同时使用 Clang 和 gcc-4.9 进行了尝试,但它们并不关心顺序。

至于 dll.a 文件的奇怪行为,这是因为一些 *.a 文件只是导致链接到实际 cyg*.dll 的 stub ,这些文件都在/usr/bin 或/usr/local/bin 中。但是,我认为这应该始终是自动的,因为 Cygwin 试图成为 POSIX,所以如果你做得对,那么你就不必引用 cyg*.dll 文件。

从这里发现:
https://cygwin.com/ml/cygwin/2011-12/msg00305.html

关于gcc - 对 `__imp___gmpz_init' 的 undefined reference ,在 Cygwin 上构建 GMP 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29046724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com