《嵌入式C编程实战》——1.5 软件开发工具-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

《嵌入式C编程实战》——1.5 软件开发工具

简介:

本节书摘来自异步社区《嵌入式C编程实战》一书中的第1章,第1.5节,作者【瑞典】Lars Bengtsson(本特松) , Lennart Lindh(林德), 李华峰 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.5 软件开发工具

现在有很多的软件开发语言,如C、C++、ADA、LISP等。软件的开发都遵循标准化的过程。程序(源代码)可以被编译成目标对象可以执行的代码,一些编译器会将代码转换为汇编程序。而链接器将程序与用到的库文件和其他一些东西组织在一起,而且所有的基地址都是绝对地址。链接器最后产生的可以被下载到目标系统并执行的机器代码,如图1.11所示。


screenshot

1.5.1 编译器

编译器是一种计算机软件,它的作用是将源程序转换为目标程序。通常,通过两个步骤,就可以将一个C语言编写的程序转换为目标程序。第一步,将C程序转换为汇编程序;第二步,将汇编转换为目标程序。目标程序不能直接载入到系统中,它还需要和其他目标代码文件链接到一起。

目标程序可能会需要与设备驱动程序和其他程序组织在一起,这一点需要由链接器来实现。编译器不会将符号地址转换为真实地址。因此,这里即使只有一个目标程序,也必须使用链接器来完成地址转换。

1.5.2 链接器

链接器允许将不同的模块组织成一个程序,而程序员使用链接器的历史可以追溯到1947年。
链接器的定义

链接器是一个程序,可以将目标程序模块组织在一起,形成一个可执行的程序。简单地说,就是它将多个文件组合到了一起。

目标程序是指一种包含了机器代码和信息的程序模块。这些模块最后需要链接器进行组装。

大多数的编程语言(如C)都允许独立地进行模块的编写。这样做简化了编程的工作,因为你可以将一个大型的程序分解为多个更小、更容易管理的部分。

最后,将这些模块组合在一起,这是链接器的工作。图1.12给出了程序链接的过程。


screenshot

elf=可执行链接格式。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: