关于编译和链接的过程提问

[复制链接]
 楼主| adibe 发表于 2008-3-10 14:25 | 显示全部楼层 |阅读模式
我理解的编译链接过程:<br />一个C程序要运行需要有可执行文件,头文件和库文件。编译器在编译过程中将程序转换为机器码obj文件,链接时把生成的obj文件和库文件连接在一起,生成可执行文件。<br />不知道以上过程是否正确?<br />如果正确请指教:如果生成一个可执行文件后,从A机移植到B机,那么是不是必须得保证B机需要有和A机相同的库文件环境?<br />而有些库文件相当大,链接过程中应该不会把库文件全部加到可执行文件里吧?那么做嵌入式开发时,库文件的管理是如何进行的?
Ice_River 发表于 2008-3-10 14:30 | 显示全部楼层

应该看看计算机原理!

  
 楼主| adibe 发表于 2008-3-10 15:56 | 显示全部楼层

一直没有注意这方面的问题,

我是做硬件的,也刚开始接触ARM这方面的东西,很多不懂。网上找了些资料感觉也没到位,谁明白的能帮个忙吗?
luocolor 发表于 2008-3-10 16:22 | 显示全部楼层

RE

我的观点:<br />从A机移植到B机,那么是不是必须得保证B机需要有和A机相同的库文件环境<br /><br />----------------<br />要保证B机能够识别A机编译生成的可执行文件!二进制码(格式)<br /><br />即:<br />B机的cpu能够认识A机生成的可执行文件!
 楼主| adibe 发表于 2008-3-11 09:11 | 显示全部楼层

那么这个可执行文件中应该也是包含了相关的库信息了?

但不是完整的库吧?移植B机后可执行文件需要在B机上“认证”这些库吧?<br />好象走到死胡同去了,这样想是不是太不合理了?
dld2 发表于 2008-3-11 09:52 | 显示全部楼层

静态链接、动态链接

一般在嵌入式系统我们用静态链接。可执行文件中包含库文件的代码。<br />&nbsp;&nbsp;&nbsp;不是完整的库,是被应用程序使用的部分。<br />目标机(Target)不会区分可执行文件中,哪些部分来自库,哪些部分来自应用程序。<br /><br />在windows这样的系统上,有所谓动态链接。可执行文件中不包含动态链接库的代码,对库的调用在运行时解决。<br /><br />其实,也可以在没有操作系统的情况下自己实现动态链接。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

275

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部