打印

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

[复制链接]
1769|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
adibe|  楼主 | 2008-3-10 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我理解的编译链接过程:
一个C程序要运行需要有可执行文件,头文件和库文件。编译器在编译过程中将程序转换为机器码obj文件,链接时把生成的obj文件和库文件连接在一起,生成可执行文件。
不知道以上过程是否正确?
如果正确请指教:如果生成一个可执行文件后,从A机移植到B机,那么是不是必须得保证B机需要有和A机相同的库文件环境?
而有些库文件相当大,链接过程中应该不会把库文件全部加到可执行文件里吧?那么做嵌入式开发时,库文件的管理是如何进行的?

相关帖子

沙发
Ice_River| | 2008-3-10 14:30 | 只看该作者

应该看看计算机原理!

使用特权

评论回复
板凳
adibe|  楼主 | 2008-3-10 15:56 | 只看该作者

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

我是做硬件的,也刚开始接触ARM这方面的东西,很多不懂。网上找了些资料感觉也没到位,谁明白的能帮个忙吗?

使用特权

评论回复
地板
luocolor| | 2008-3-10 16:22 | 只看该作者

RE

我的观点:
从A机移植到B机,那么是不是必须得保证B机需要有和A机相同的库文件环境

----------------
要保证B机能够识别A机编译生成的可执行文件!二进制码(格式)

即:
B机的cpu能够认识A机生成的可执行文件!

使用特权

评论回复
5
adibe|  楼主 | 2008-3-11 09:11 | 只看该作者

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

但不是完整的库吧?移植B机后可执行文件需要在B机上“认证”这些库吧?
好象走到死胡同去了,这样想是不是太不合理了?

使用特权

评论回复
6
dld2| | 2008-3-11 09:52 | 只看该作者

静态链接、动态链接

一般在嵌入式系统我们用静态链接。可执行文件中包含库文件的代码。
   不是完整的库,是被应用程序使用的部分。
目标机(Target)不会区分可执行文件中,哪些部分来自库,哪些部分来自应用程序。

在windows这样的系统上,有所谓动态链接。可执行文件中不包含动态链接库的代码,对库的调用在运行时解决。

其实,也可以在没有操作系统的情况下自己实现动态链接。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

275

帖子

0

粉丝