历史上的今天
返回首页

历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2019年10月17日 | gcc基本常用选项

2019-10-17 来源:51hei


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


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内核等不需要启动文件,标准库文件



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


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



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


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


推荐阅读

史海拾趣

CIF公司的发展小趣事

B公司原本是一家地区性的电子产品供应商,为了拓展国际市场,决定采用CIF交易模式。通过与国外客户的深入沟通和合作,B公司成功打开了多个海外市场。同时,B公司还积极参与国际电子产品展会,提升品牌知名度,进一步巩固了其在全球市场的地位。

Adaptive Networks Inc公司的发展小趣事

A公司是一家专注于电子元器件生产的CIF公司。在成立初期,A公司凭借其创新的研发能力和高效的生产流程,迅速在市场中脱颖而出。通过与全球多家知名电子产品制造商建立稳定的CIF贸易关系,A公司不断扩大生产规模,优化产品质量,逐渐发展成为行业内的领军企业。

广州盛炬(GZSJ)公司的发展小趣事

C公司是一家专注于电子产品贸易的CIF公司。为了降低成本、提高效率,C公司积极整合全球供应链资源,与多家优质的电子产品生产商建立了长期合作关系。通过优化采购、生产和物流等环节,C公司成功降低了运营成本,提高了市场竞争力。

Hoffman_Enclosures__Inc.公司的发展小趣事

1945年,一位名叫Harry Hoffman的年轻人凭借对工厂安全的深刻关注,发明了压力机安全保护装置。这一装置能够在操作人员的手处于危险区域时迅速停止机器,有效保护了工人的安全。这一创新不仅为Hoffman公司奠定了技术基础,也标志着公司正式步入工业电气机柜和温控产品的研发与制造领域。Harry Hoffman的这项发明不仅解决了当时工厂安全的一大难题,也为公司后续的发展奠定了坚实的基础。

Fullywell Semiconductor Co Ltd公司的发展小趣事

面对市场需求的不断变化和技术的不断进步,Fullywell始终保持着对研发的重视和投入。在2020年,公司研发团队经过数年的努力,成功攻克了多项关键技术难题,推出了新一代的智能电源管理芯片。这款芯片在能效比、集成度和可靠性等方面均达到了行业领先水平,赢得了市场的广泛好评。Fullywell借此机会实现了产品的迭代升级,进一步巩固了其在电源管理芯片市场的领先地位。

FLIR公司的发展小趣事

为了进一步扩大市场份额,FLIR在20世纪80年代末至90年代进行了一系列重要的战略并购。1990年,FLIR收购了美国休斯飞机公司在工业红外成像领域的业务,这一举动极大地增强了其在商业热成像市场的竞争力。随后,FLIR又分别收购了瑞典的Agema公司和波士顿的Inframetrics公司,这两家公司都是红外热像仪领域的佼佼者,拥有丰富的技术积累和市场资源。通过这些并购,FLIR不仅壮大了自身的研发团队和销售网络,还加速了其挺进商用热成像市场的步伐,进一步巩固了其市场领先地位。

问答坊 | AI 解惑

求高手们帮忙看看这个射频可调衰减器

求高手们帮忙看看这个射频可调衰减器求高手们帮忙看看这个射频可调衰减器中Q1是用什么管的。型号是多小!!!!!原来上面用的是这个3个脚的管子 …

查看全部问答>

读简历的人最不喜欢看到的字眼

你知道你的简历里哪些词语会在不经意间惹恼招聘者吗?   动词列表是简历编写指南里保留的项目,调查还发现:简历里尽可能的堆满动词、形容词和副词的求职成功率更高。几乎所有的人事经理都喜欢选择有效的字句,而不是花样繁多的词藻的简历。   ...…

查看全部问答>

无法弹出wifi登陆框

wince加了wifi组件,同时里面有wifi的驱动和注册表 但插入wifi模块时候为什么不能够弹出登录框 dnw也没有打印出wifi加载的信息 想问一下 这个现象是不是与定制explore的时候有关呢? 由于需要,将系统的部分功能裁减了,比如说将\"任务栏\"去 ...…

查看全部问答>

串口线不通用吗?

我有两根直连串口线,一个是LPC2114开发板用的,一个是2440开发板用的。这两根串口线只能在各自的板子上用!不能混用!就是说,把LPC2114板子用的那个串口线拿到2440的板子上就不能用(超级终端不能正常收发数据)! 我想串口线应该是通用的吧?? ...…

查看全部问答>

FATAL ERROR - InitDetectCPU Failed

Debug Serial Init SysInit: GDTBase=8103d0e8 IDTBase=8105e860 KData=81065800 Windows CE Kernel for i486 Built on Jun 24 2004 at 18:23:42 g_pPageDir = 81066000                &nb ...…

查看全部问答>

I2C总线库函数介绍

函数I2CMasterInitExpClk( )    …

查看全部问答>

LwIP在ucos ii下的移植,一点资料!

一个pdf,一个DSP的工程 网上找的,看了好久 还是没有实现! 大家一起来研究~~~…

查看全部问答>

M4开发板(14):硬件问题,关于Hanker开发板的VREF!

这几天又重新玩起了ADC采样功能,在测试AD采样加速度传感器的时候,我发现了问题,这个问题早在 https://bbs.eeworld.com.cn/viewthread.php?tid=330464这个帖子里,我就发现了,那就是AD采样的值不准确!!那个测倾角的程序,本来使用的那个MSP-E ...…

查看全部问答>

求助一下公模的问题

PCB板是不是也涉及到公模的问题,我做的是一块单片机最小系统板,想给它量产的话,上边要求要做适应公模,我想问一下公模的大小怎么确定,我从哪里可以得到公模尺寸…

查看全部问答>