Linux GNU 编译基础知识

2019-07-13 04:49发布

A. arm-linux-gcc

这里只简单介绍该命令的使用方法,详细资料可详读参考资料中的《嵌入式LINUX应用开发完全手册》第3章。
     -c  对源文件进行预处理、编译、汇编,但不做链接,生成中间OBJ文件,通常以.o结尾。
     -g    添加调试信息
     -o  指定输出文件。如果不指定-o filename 选项,默认输出为a.out文件。 B.  arm-linux-ld         -Ttext     startaddr         -Tdada    startaddr
        -Tbss      startaddr

其中-T选项用来指定代码段、数据段、BSS段的起始地址。此外,还可以用来指定的链接脚本。           知识点:

                可执行程序是由代码段、数据段、BSS段组成的。
                数据段:存放的是初始化的全局变量和静态变量。
    BSS段:存放的是未初始化的全局变量和静态变量。
 
 C. arm-linux-objcopy

用于将一个目标文件复制到另一个文件内,可以使用不同于源文件的格式输出到目的文件。常用于格式转化。

        -O    用于指定输出的文件格式。如二进制 –O binary
        -I   用于指定源文件的格式
        -S 不从源文件中复制重定位信息和符号信息到目标文件

D. arm-linux-objdump

用于显示二进制文件住处。常用于进行反汇编,方便调试。

          -D  反汇编所有段
          -m  指定反汇编目标文件所使用的架构,如 –m arm 指定为ARM体系架构。
          -b    指定输入文件的格式,这不是必须的,arm-linux-objdump能自动识别多种格式。 Makefile

请大家参考《GNU makefile 手册》。
                     目标(target)……. : 信赖(prerequiries)…
                                             :命令(command)
这里需要注意的是命令前面一定要使用TAB键,不能用空格。请参照后面的实例进行学习,看手册不要看得太多,要边学边用,这样才会达到最好的效果。