首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gcc手动链接失败:找不到我的运行时库的一些符号

gcc手动链接失败:找不到我的运行时库的一些符号
EN

Stack Overflow用户
提问于 2017-02-11 12:06:17
回答 1查看 91关注 0票数 1

我在我的64个小点上试过这个

首先,我有一个简单的程序

代码语言:javascript
运行
复制
$ cat test.c
int f(int x){
        int i=(x/42);
        return i;
}
int main(){
        return 0;
}

然后我手动指定它是如何链接的:

代码语言:javascript
运行
复制
$ gcc test.c -nostdlib /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o 

我有一些错误:

代码语言:javascript
运行
复制
    /usr/lib/x86_64-linux-gnu/crt1.o:In function ‘_start’中:
(.text+0x12):unresolved reference to ‘__libc_csu_fini’
/usr/lib/x86_64-linux-gnu/crt1.o:In function ‘_start’:
(.text+0x19): unresolved reference to ‘__libc_csu_init’
/usr/lib/x86_64-linux-gnu/crt1.o:In function ‘_start’:
(.text+0x25): unresolved reference to ‘__libc_start_main’
collect2: error: ld returned 1 exit status

我试图了解gcc如何处理所有必要的对象文件,并尝试手动处理。怎么修呢?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-11 12:36:14

怎么修呢?

您缺少libc符号,因此需要链接libc

代码语言:javascript
运行
复制
gcc test.c -nostdlib /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o -lc

请记住,如果您真的想要“手动”链接某些内容,您将使用ld,而不是gcc进行链接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42175652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档