+ -
当前位置:首页 → 问答吧 → 编译两个.o文件是什么意思~

编译两个.o文件是什么意思~

时间:2011-12-15

来源:互联网

MAC系统

执行几个C语言文件,
执行代码是这样的


1. gcc -Wall -c -o ana.o ana.c
2. gcc -Wall -c -o round.o rounda.c
3. gcc -Wall -o cal rounda.o ana.o –lm
4. ./cal 


第三句的两个.o文件是什么关系呢
怎么连接的?
不太懂!

我一般都是gcc -Wall -c -o ana.o ana.c
之后就直接执行./ana.o了

这个是什么情况?

作者: saiwai1234567   发布时间: 2011-12-15

通常情况下都是有多个.o的,就是多个目标文件链接成一个可执行文件……

作者: kf44444   发布时间: 2011-12-15

连接rounda.o ana.o生成cal

作者: icechenbing   发布时间: 2011-12-15

引用 1 楼 kf44444 的回复:
通常情况下都是有多个.o的,就是多个目标文件链接成一个可执行文件……

+

作者: sunhuafeng521   发布时间: 2011-12-15

GCC不单单是个编译器,还有链接的功能。第三句用于链接,并生成可执行程序。

作者: logicouter   发布时间: 2011-12-15

引用 4 楼 logicouter 的回复:
GCC不单单是个编译器,还有链接的功能。第三句用于链接,并生成可执行程序。

+1

作者: TMAC10052120353   发布时间: 2011-12-15

《程序员的自我修养——链接、装载与库》

作者: zhao4zhong1   发布时间: 2011-12-15

通常,每个工程都会生成N多个.o文件。然后共同链接进去。。。。。生成一个目标文件,建议楼主去看一下,c语言的一个编译过程。。。大概分为五步走,这里不再赘述。百度很多!!!

作者: wallwind   发布时间: 2011-12-15

那个不是编译而是链接

这个用法是对ld的wrapper

作者: xunxun1982   发布时间: 2011-12-15

所谓的共同链接,是指有共同的函数?
并且这2个.c文件中,分别有main函数。

两个有main函数的c文件编译成.o文件,通过什么能链接?

共同的头文件?
共同的变量?
还是共同的函数哦?
或者有引数之类的?



引用 7 楼 wallwind 的回复:

通常,每个工程都会生成N多个.o文件。然后共同链接进去。。。。。生成一个目标文件,建议楼主去看一下,c语言的一个编译过程。。。大概分为五步走,这里不再赘述。百度很多!!!

作者: saiwai1234567   发布时间: 2011-12-16

编译单元,由.c生产,可以打包成.a用户静态连接~

作者: mscf   发布时间: 2011-12-16

严格的说,第三步是链接,由链接器完成。
前两步才是编译。

作者: aozhi   发布时间: 2011-12-16