gcc基本常用选项

发布者:星辰耀眼最新更新时间:2019-10-17 来源: 51hei关键字:gcc  常用选项  静态链接 手机看文章 扫描二维码
随时随地手机看文章


//======================================================


gcc和Linux gcc 的常用选项



gcc的使用方法


gcc 【选项】  文件名



gcc常用选项


gcc  


-v: 查看gcc编译器的版本,显示gcc执行时的详细过程


-o      please the output into


              指定文件名为file,这个名称不能和源文件名相同


-E            preprocess only :do not compile ,assemble or link


              只预处理 ,不会编译,汇编,链接


-S            compile only:do not assemble or link


              只编译,不会编译,汇编,链接



//==============================================================


gcc -v :查看gcc编译器的版本


方式一:



gcc hello.c 输出一个./a.out,然后./a.out来执行这个应用程序。



gcc -o  hello hello.c  输出hello ,然后./hello 来执行这个程序。




方式二:


gcc -E -o  hello.i  hello.c


gcc -S -o  hello.s  hello.i


gcc -c -o  hello.o  hello.s


gcc -o  hello  hello.o




.o:objet file (OBJ文件)



小结:


1)输入文件的后缀名和选项共同决定gcc到底执行哪些操作


2)在编译过程中,除非是使用了-E,-S,-c选项(或者编译过程中出错阻止了编译过程否则最后的步骤都是链接)




方式三:


gcc  -c  -o  hello.o  hello.c


gcc -o hello hello



gcc 会对.c文件默认进行预处理操作,-c再来指明编译,汇编,从而得到了.o文件


再来通过gcc -o hello hello.o 将.o文件进行链接,得到可执行应用程序


//======================================================


补充:



gcc -c -o hello.o hello.c


        gcc -o hello hello.o



gcc会对.c文件默认进行预处理操作,-c再来指明编译,汇编从而得到.o文件


再通过gcc -o hello hello.o将.o文件进行链接,从而得到可执行文件



链接就是将汇编生成的OBJ文件,系统库的OBJ文件,库文件链接起来


最终生成可以在特定平台的可执行程序




crtl.o ,crti.o ,crtbegin.o , crth.o是加入的系统标准启动文件


对于一般的应用程序,这些启动是必须的



-lc :链接libc库文件, 其中libc库文件中就实现了printf等函数



gcc -v -nostdlib -o  hello hello.o会提示因为没有链接系统标准启动文件和标准库文件,而链接失败。


这个 -nostdlib选项常用于裸机的/boot loader,linux内核等程序,因为他们不需要启动文件,标准库文件



一般应用程序才需要系统标准启动文件和标准库文件  


裸机/boot loader,linux内核等不需要启动文件,标准库文件



动态链接使用动态链接库进行链接,生成的程序执行的时候需要加载所需的动态库才能运行


动态链接生成的程序体积较小,但是必须依赖所需要的动态库,否则无法执行



静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直接运行,


不过静态链接生成的程序体积较大


关键字:gcc  常用选项  静态链接 引用地址:gcc基本常用选项

上一篇:基于数字相关的时栅信号处理设计LPC2138源程序及proteus仿真
下一篇:iTOP-6818嵌入式开发板win10下tf卡分区

推荐阅读最新更新时间:2024-11-20 15:26

ATmega16L 的中断源及在GCC中的中断名
ATmega16L 的中断源及在GCC中的中断名 中断源 中断定义 在GCC中的中断名SIG_NAME RESET 复位中断   INT0 外部中断请求0 SIG_INTERRUPT0 INT1 外部中断请求1 SIG_INTERRUPT1 TIMER2 COMP 定时/计时器 2 比较匹配 SIG_OUTPUT_COMPARE2 TIMER2 OVF 定时/计时器 2 溢出 SIG_OVERFLOW2 TIMER1 COMPA 定时/计时器 1 比较匹配 A S
[单片机]
ubuntu下gcc-avr安装
ubuntu下研究arduino时发现,原来可以不用arduino IDE开发,linux下还有gcc-avr直接开发avr系列的控制器。 于是,迫不及待的查看了下相关资料,总结一下安装gcc-avr的步骤。 PS:感叹一下,现在ubuntu做得实在是太好用了,以前很费心的事情,现在都很简单了。 1、更新下系统,并安装开发包。 apt update apt upgradeapt install build-essential 2、安装gcc-avr的工具链。 apt install gcc-avr avr-libc avrdude gdb-avr 3、安装相关软件的帮助文档。 apt install avrdude-d
[单片机]
arm gcc交叉编译工具链建立
1.1. Arm交叉编译工具链 下载地址Gnu.org binutils-2.21.1.tar.bz2 gcc-4.4.4.tar.bz2 glibc-2.11.2.tar.bz2 Glibc-ports-2.11.tar.bz2 Gmp-4.2.tar.bz2 Mpfr-2.4.0.tar.bz2 1.1.1. 建立工作目录 创建工具链文件夹: # mkdirembedded-toolchains 在建立了顶层文件夹embedded-toolchains,下面在此文件夹下建立如下几个目录: setup-dir,存放下载的压缩包; src-dir,存放binutils、gc
[单片机]
ARM体系下的GCC内联汇编
在操作系统级的编程中,有时候,C语言并不能完全的使用硬件的功能,这时候就需要嵌入一些汇编代码来实现功能。 有两种方式可以使C语言和assemly语言一起工作,一种是两种语言分开写成两个文件,链接的时候链接成一个文件;另一种就是在C语言中嵌入汇编代码。下面简单介绍一下如何在GCC中嵌入汇编代码。 GCC规定了一个内联汇编的语法,不同硬件平台上的GCC内联汇编几乎都是这样的: asm( 汇编指令列表 :输出运算符列表 :输入运算符列表 :被更改的资源列表 }; 在GCC中插入汇编代码,需要以asm关键字开头,中间四个部分用”:”分隔,如果你嵌入的汇编没有输入输出,或者更改资源,后面三项是可以省略的。 下面以
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved