免费注册 查看新帖 |

Chinaunix

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

[C] 目标文件的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-09 14:41 |只看该作者 |倒序浏览
本帖最后由 landker 于 2013-08-09 19:49 编辑

如何生成一个目标文件(*.o)?

我的意思是,如果我要手工编程生成一个 *.o 的目标文件(注意,不是一般情况下的利用工具进行编译,即例如一个C的源程序会先翻译成汇编程序,然后利用nasm/gas等的工具生成对应的 *.o目标文件,最后利用ld生成ELF/AOUT格式的程序),该如何做?

此外,是否存在一定的目标文件格式(即,如果是一个ELF文件,则会存在一个ELF头;那对于一个目标文件,是否也存在一个”目标文件头“)?

论坛徽章:
0
2 [报告]
发表于 2013-08-09 14:46 |只看该作者
回复 1# landker

ding...
   

论坛徽章:
0
3 [报告]
发表于 2013-08-09 15:12 |只看该作者
gcc 有选项可生成汇编文件,然后你可以用汇编工具或者gcc自己去编译这个汇编文件,然后。。。。

论坛徽章:
0
4 [报告]
发表于 2013-08-09 17:19 |只看该作者
本帖最后由 landker 于 2013-08-09 19:53 编辑
李营长 发表于 2013-08-09 15:12
gcc 有选项可生成汇编文件,然后你可以用汇编工具或者gcc自己去编译这个汇编文件,然后。。。。


抱歉,之前的帖子描述的不够详细,我的目的是想“手工编程“生成一个 *.o 文件。即输入为一个汇编文件(*.asm),输出为一个目标文件(*.o).......

论坛徽章:
0
5 [报告]
发表于 2013-08-09 19:53 |只看该作者
回复 1# landker

有人知道吗?
   

论坛徽章:
0
6 [报告]
发表于 2013-08-09 20:13 |只看该作者
当然存在一定的格式了,不然linker怎么工作?
你自己不都说了吗,就是个nasm/gas这样汇编器的功能。
你要实现一个汇编器做什么呢?

论坛徽章:
0
7 [报告]
发表于 2013-08-09 20:17 |只看该作者
本帖最后由 landker 于 2013-08-09 20:19 编辑
sqfasd 发表于 2013-08-09 20:13
当然存在一定的格式了,不然linker怎么工作?
你自己不都说了吗,就是个nasm/gas这样汇编器的功能。
你要 ...


只是想探讨一下汇编器的工作过程而已........

此外,你提到的”格式“是怎样的?

论坛徽章:
0
8 [报告]
发表于 2013-08-09 20:21 |只看该作者
landker 发表于 2013-08-09 20:17
只是想探讨一下汇编器的工作过程而已........

此外,你提到的”格式“是怎样的?


论坛徽章:
0
9 [报告]
发表于 2013-08-09 20:47 |只看该作者
sqfasd 发表于 2013-08-09 20:21


楼上,

你这个应该是《linkers and loaders》里面的目录片段......

我刚才翻了一下该书,感觉如果对于 *.o 的文件,应该有至少2种方式生成:

1)带”信息头”,如:ELF

2)不带“信息头”,文件从一开始就全部是2进制代码

个人感觉,如果该目标文件(*.o)要与其他文件“链接”,则必须在编译生成该目标文件时采用上面 1)的方式(即“带信息头”);否则ld无法获知该目标文件的内容结构。

而如果要制作类似“操作系统的boot引导盘代码”这类东东,则采用2)的方式,直接将2进制代码输出至目标文件(*.o)。而对该目标文件的处理则是作者自定的,例如“全部copy”到指定位置。

是这样吗?

论坛徽章:
0
10 [报告]
发表于 2013-08-09 20:55 |只看该作者
landker 发表于 2013-08-09 20:47
楼上,

你这个应该是《linkers and loaders》里面的目录片段......


那个目录片段出自《程序员的自我修养—链接、装载与库》

你这研究的也太细节了吧,其实书上说的很清楚了,仔细看书就行了,没啥好讨论的,就是规范而已

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP