免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2719 | 回复: 14
打印 上一主题 下一主题

请教一个GCC命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-02-28 15:39 |只看该作者 |倒序浏览
我有两个文件
ch1-01a.c
# include <stdio.h>;

void fun()
{
printf("hello world\n";
}

ch1-01b.c
void fun();
int main(){
fun();
return 0;
}
我分别用gcc -c xx.c编译成.o文件
然后用ld ch1-01a.o ch1-01b.o总是报找不到printf函数
我不知道包含printf的标准库名是什么?请问这种情况下怎么解决与标准库的连接
可不可以在gcc将ch1-01a.c编译成.o文件时就将printf函数连接进去?

论坛徽章:
0
2 [报告]
发表于 2005-02-28 15:57 |只看该作者

请教一个GCC命令

gcc a.o b.o -o  a

论坛徽章:
0
3 [报告]
发表于 2005-02-28 16:03 |只看该作者

请教一个GCC命令

翻了ld手册,说是要连接libc,用-lc选项。

论坛徽章:
0
4 [报告]
发表于 2005-02-28 16:11 |只看该作者

请教一个GCC命令

连接的时候不用ld,还用gcc就行了

论坛徽章:
0
5 [报告]
发表于 2005-02-28 16:24 |只看该作者

请教一个GCC命令

有没有ld的解决方法?
我试了-lc
ld: warning: cannot find entry symbol _start; defaulting to 08048184
报错

论坛徽章:
0
6 [报告]
发表于 2005-02-28 16:38 |只看该作者

请教一个GCC命令

看样子,ld的man手册实效很久了,info版的我不会用,不知道有没有。

man让连接crt0.o,可是/lib下根本找不到,/usr/lib/bcc/i386(RH9)倒有一个,可是ld不认,不知道为什么。

论坛徽章:
0
7 [报告]
发表于 2005-02-28 16:53 |只看该作者

请教一个GCC命令

ld -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o -lc hello.o /usr/lib/crtn.o
用上边这个试试。
gnu的默认链接是使用的_start作为程序的入口,而我们的程序入口却是main
GNU的gcc编译器在完成了编译、汇编之后,就会使用这样一个命令,将你的程序与crt0.o连接起来。后面有一个参数,-lc,它的意思就是将libc作为库文件。libc只是一些普通的函数的实现
  在crt0这个文件中,包含了初始化的代码,初始化完之后,会通过一个BL指令(在x86中好像是call),跳到main(x86中是_main)符号,main符号就是我们的函数main(),在for x86的时候,默认的编译会把函数main编译成符号_main
crt0.o好像是自动连接上的

论坛徽章:
0
8 [报告]
发表于 2005-02-28 16:53 |只看该作者

请教一个GCC命令

呵呵 我也查了半天 说是有crt0.o 找了几个默认的lib目录 都没有 不知道库函数的2进制文件存在哪边

论坛徽章:
0
9 [报告]
发表于 2005-02-28 17:00 |只看该作者

请教一个GCC命令

原帖由 "zhaoming1214" 发表:
ld -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o -lc hello.o /usr/lib/crtn.o
用上边这个试试。
gnu的默认链接是使用的_start作为程序的入口,而我们的程序入口却是main
GNU的gcc编译器..........


好厉害,这些资料从哪里来的?强!
我看到/usr/lib下有crt1.o,crti.o,crtn.o,gcrt1.o,Mcrt1.o这么多有crt字样的文件,不知道都是干什么的啊?
请再赐教~~

论坛徽章:
0
10 [报告]
发表于 2005-02-28 17:26 |只看该作者

请教一个GCC命令

是啊 劳驾详细讲一下命令的含义 谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP