加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在Linux上静态链接libgmp时出错

发布时间:2020-12-14 01:48:58 所属栏目:Linux 来源:网络整理
导读:GMP文档说静态链接可以提供小的性能改进. 我在使用Linux系统上的静态链接libgmp时遇到了问题.我已经缩小了我遇到的一个小问题的问题. gmptest.c #include gmp.hint main(int argc,char** argv) { mpz_t foo; mpz_init(foo); return 0;} Makefile文件: all:
GMP文档说静态链接可以提供小的性能改进.

我在使用Linux系统上的静态链接libgmp时遇到了问题.我已经缩小了我遇到的一个小问题的问题.

gmptest.c

#include <gmp.h>

int main(int argc,char** argv) {
    mpz_t foo;
    mpz_init(foo);
    return 0;
}

Makefile文件:

all: clean gmptest static

clean:
    rm -f *.s
    rm -f *.o
    rm -f gmptest
    rm -f static-gmptest

gmptest: Makefile gmptest.c
    gcc -std=c99 -O3 -lgmp gmptest.c -o gmptest

static: clean Makefile gmptest.c
    gcc -std=c99 -O3 -static /usr/lib/libgmp.a gmptest.c -o static-gmptest

编译和链接非静态二进制文件没有任何问题,但“Make static”产生:

gcc -std=c99 -O3 -static /usr/lib/libgmp.a gmptest.c -o static-gmptest
/tmp/ccWSFke9.o: In function `main':
gmptest.c:(.text+0x8): undefined reference to `__gmpz_init'
collect2: ld returned 1 exit status
make: *** [static] Error 1

该库确实存在:

chris@vostro:~/Dropbox/static$ls -lA /usr/lib/libgmp.a 
-rw-r--r-- 1 root root 1041666 2010-02-26 13:20 /usr/lib/libgmp.a

我也试过-lgmp用于静态链接,但错误是一样的.

这一切都在Ubuntu 10.04和10.10 AMD64上.

对于我正在犯的明显错误,有些人可以启发我吗?

谢谢,

克里斯.

解决方法

尝试

gcc -std=c99 -O3 -static gmptest.c -lgmp -o static-gmptest

因为库应始终以良好的顺序链接,并在程序或目标文件之后使用它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读