gcc/arm-linux-gcc 浅析

原创 2015年07月07日 20:06:32
  1. 编译过程的理解
    • 预处理:针对预处理命令,例如#include,#define,#ifdef…#ednif。将相应的预处理命令执行,例如#include的包含,#define的替换等,将.c/.cpp文件转化为.i文件,生成的.i文件会比.c/.cpp文件大的多,主要是因为包含进大量的.h文件。
    • 编译:预处理之后的.i文件将用来做具体的编译,将.i文件转化为汇编.s文件。对于.s文件,我们可以通过汇编的语法了解程序内部的具体流程。特别的,由于.s文件相对于.i文件抛弃了大量的无用内容,所以.s文件会比.i文件小的多。同时。由于汇编语言相对于c/c++较为繁琐,所以.s文件会比.c/.cpp大一些。
    • 汇编:上一步生成的.s文件将会用来汇编成机器代码.o文件,同时也是可执行文件。自然,机器代码要比汇编语言更繁琐一些,相应的.o文件会比.s文件大一些。
    • 连接:在写程序的时候不可避免的会用到一些库文件,或是本身的源文件就由多个源文件组成,也就是说,汇编的过程将程序的各个有机部分编译成功,最后一步自然要将各个部分的.o文件结合库文件连接到一起,生成最终的可执行.o文件。
  2. gcc/cc/arm-linux-gcc的常用选项
    • -c: 编译不连接, .c/.cpp->.o
    • -S: 不汇编, .c/.cpp->.s
    • -E: 不编译, .c/.cpp->.i
    • -o file: 生成名为file的文件
    • -v: 显示配置命令
    • -Wall: 查看所有警告,特别是直接编译不会显示的一些警告
    • -g: 调试专用
    • -O: 优化
    • -llibrary: 连接名为liblibrary.a的库
    • -shared: 生成一个库文件
    • -Ldir: 假如链接的搜索路径
    • -Idir: 假如头文件搜索目录
    • -nostartfile: 不连接标准启动文件
    • -nostdlib: 不连接标准启动文件和标准库文件
  3. ld/arm-linux-ld常用选项
    • -T:指定程序或数据区的存放地址,例如-Ttext/-Tdata/-Tbss addr(16进制表示)
    • -T filename: 指定连接脚本
  4. objdump/arm-linux-objdump常用选项
    格式: arm-linux-objdump -D main.o > main.s
    • -d: 反汇编可执行段
    • -D: 反汇编所有段
版权声明:本文为博主原创文章,未经博主允许不得转载。

简单说明gcc和arm-linux-gcc的区别

首先了解一下编译的过程:一个源文件经过gcc编译器编译后生成可执行文件其实经历了四个过程: * 预处理(Pre-processing) * 编译(Compiling) * 汇编(Assembli...
  • yz_cfm
  • yz_cfm
  • 2017年08月09日 16:12
  • 546

GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析

一、GCC简介: The GNU Compiler Collection,通常简称GCC,是一套由GNU开发的编译器集,为什么是编辑器集而不是编译器呢?那是因为它不仅支持C语言编译,还支持C++...
  • guoxiaoqian8028
  • guoxiaoqian8028
  • 2014年01月22日 14:48
  • 477

arm-linux-gcc的官方源码寻找过程

第一次找gcc:我要在linux开发环境下编程,当然我是用了虚拟机。于是在网上找到了一个gnu的地址: ftp://ftp.gnu.org/gnu/gcc/,并且从中下载了,gcc-3.4.1 安装包...
  • yushengyang
  • yushengyang
  • 2015年02月08日 01:39
  • 328

gcc和arm-linux-gcc区别

安装arm-linux-gcc的时候,查了不少资料,总
  • longfeiah
  • longfeiah
  • 2014年07月21日 18:06
  • 2024

gcc和arm-linux-gcc是什么关系?区别是什么?

转自https://zhidao.baidu.com/question/751767892635633804.html gcc是linux系统下面用来将代码编译成一个可执行程序的手段。编译出来的...
  • qingkongyeyue
  • qingkongyeyue
  • 2017年06月02日 22:09
  • 518

Ubuntu12.04 64位中安装arm-linux-gcc的过程

本文介绍了在64位Ubuntu下安装arm-linux-gcc-4.4.3的完整方法,介绍了配置PATH环境变量的方法,介绍了解决.arm-none-linux-gnueabi-gcc: not fo...
  • xueyushenzhou
  • xueyushenzhou
  • 2016年01月20日 09:10
  • 1591

arm-linux-gcc安装 和 环境变量设置

1。 下载arm-linux-gcc-3.4.1.tar.bz2到任意的目录下,我把它下载到了我的个人文件夹   里 /home/wrq  arm-linux-gcc-3.4.1.tar.bz2 的下...
  • zhanglianpin
  • zhanglianpin
  • 2011年04月13日 11:34
  • 18482

Linux系统中arm-linux-gcc编译器升级

Linux系统中arm-linux-gcc编译器升级: 最近在编译Linux内核,但编译的时候提示错误: 然后从网上查找该错误的原因: 于是查看Linux系统arm-linux-...
  • fang_yang_wa
  • fang_yang_wa
  • 2017年03月10日 10:42
  • 1147

Ubuntu14.04下嵌入式交叉编译环境arm-linux-gcc-4.3.3搭建过程

最近需要做嵌入式的开发,今天照着板子的教程安装arm-linux-gcc-4.3.3交叉编译工具,安装完验证时发现安装失败 (报错,错误与下面参考文章1中第6步一样,照他说的那条命令去装32位的库,但...
  • catcherofmq
  • catcherofmq
  • 2016年06月12日 17:50
  • 1057

ubuntu64位安装ARM-linux-gcc

本人安装时是使用官方提供的arm-linux-gcc-4.5.1这个版本的。步骤如下: 将安装包放入到本地的一个文件夹中,然后tar xvzf xxx.tar.gz -C / ,这样解压后的文件...
  • u011192270
  • u011192270
  • 2015年05月29日 10:37
  • 1244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gcc/arm-linux-gcc 浅析
举报原因:
原因补充:

(最多只允许输入30个字)