1st.初识GCC——关于GCC编译器的相关语法与介绍

    一个C文件要变成可执行的文件,需要经过四个过程

    • 预处理(处理以“#”为开头的命令)
    • 编译(将.c .i等文件翻译成汇编代码)
    • 汇编(将汇编代码翻译成机器代码)
    • 连接(将生成的多个目标文件(.o文件)连接起来,生成可执行文件)
 
     主要用到的工具叫做arm-linux-gcc,arm-linux-ld,本次学习的是gcc工具。
         
      几条常用命令选项:
 
     -E:          预处理后即停止
     -S:           编译后不汇编
     -c:           预处理+编译+汇编,但不连接
     -o file:    指定输出文件为file。无论哪个环节,这个选项都可以使用
 
     编译单个文件的语句,只需要一句话即可
1 gcc -o hello hello.c    

 

     这条指令,即直接将C文件生成成可执行文件"hello"
    虽然这里是一条指令,但已经包含了几个步骤了。
 
1 gcc -E -o hello.i hello.c //对C文件做预处理
2 gcc -S -o hello.s hello.i //进行编译,生成汇编文件
3 gcc -c -o hello.o hello.s //对汇编代码编译成目标文件
4 gcc -o hello hello.o      //生成可执行程序hello

 

 
 
对于多个文件,需要进行逐个编译,再做最后的连接。
1 gcc -c -o mian.o mian.c
2 gcc -c -o sub.o sub.c
3 gcc -o test mian.o sub.o

 

 
 
也可以直接连接编译生成
1 gcc -o test mian.c sub.c

 

 
    
    
 
   其中发现的几个小问题并且已解决:
 
    关于arm-linux-gcc与gcc的区别
    在编译过程中分别试了一下两条代码
    
 代码<a>
1 arm-linux-gcc -o hello hello.c

 

 代码<b>
1 gcc -o hello hello.c

 

两者自然都能生成可执行文件[hello],但在Ubuntu上运行时,却是代码<b>可以运行,而<a>不可执行。
后有网上答案说:arm-linux-gcc编译出来的是在arm上使用的,gcc是在PC上使用的。自然不同。
 
 
 
    
    





转载于:https://www.cnblogs.com/asam/p/6351861.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值