0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

gcc的使用方法以及Linux gcc 的常用选项

嵌入式星球 来源:嵌入式星球 作者:嵌入式星球 2020-10-22 14:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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 -ohello hello.c输出hello ,然后./hello 来执行这个程序。

方式二:

gcc -E -ohello.ihello.c

gcc -S -ohello.shello.i

gcc -c -ohello.ohello.s

gcc -ohellohello.o

.o:objet file (OBJ文件)

小结:1)输入文件的后缀名和选项共同决定gcc到底执行哪些操作;2)在编译过程中,除非是使用了-E,-S,-c选项(或者编译过程中出错阻止了编译过程否则最后的步骤都是链接)。

方式三:

gcc-c-ohello.ohello.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 -ohello hello.o会提示因为没有链接系统标准启动文件和标准库文件,而链接失败。这个 -nostdlib选项常用于裸机的/boot loader,linux内核等程序,因为他们不需要启动文件,标准库文件。一般应用程序才需要系统标准启动文件和标准库文件 。裸机/boot loader,linux内核等不需要启动文件,标准库文件动态链接使用动态链接库进行链接,生成的程序执行的时候需要加载所需的动态库才能运行动态链接生成的程序体积较小,但是必须依赖所需要的动态库,否则无法执行静态链接使用静态库进行链接,生成的程序包含程序运行所需要的全部库,可以直接运行,不过静态链接生成的程序体积较大。

fqj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11627

    浏览量

    217893
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51069
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GCC -O0 编译内核:调试党的 “救命神器”,这些优势 90% 开发者没吃透!

    在 Linux 内核开发、驱动调试或内核问题定位的场景中,“编译优化等级” 是个容易被忽略却影响巨大的选择。GCC 的优化等级从 O0 到 O3、Os、Ofast 各有侧重,而 O0(默认优化等级
    的头像 发表于 12-03 07:05 6次阅读
    <b class='flag-5'>GCC</b> -O0 编译内核:调试党的 “救命神器”,这些优势 90% 开发者没吃透!

    GCC开发工程的模版

    的cw32f030.h以及system_cwl083.h。 5、Libraries/CMSIS/Device/startup_cw32f030_gcc.s重命名为startup_cw32l083_gcc.s。 6
    发表于 11-28 08:15

    如何利用 gcc 编译Ccode?

    最近在玩e203_hbirdv2,利用默认的case 可以仿真。现在想自己写C code 进行仿真,请问该如何利用 gcc 编译?有没有 详细的教程。
    发表于 11-05 12:37

    gcc工具链无法汇编硬件浮点指令fsqrt问题

    团队在项目推进过程中发现,Linux环境下,math库中的sqrt()函数无论是在浮点数的gcc工具链中还是整数的gcc工具链中,综合的结果都是以整数指令来模拟。 若果想要进一步地节约时间,我们
    发表于 10-20 06:19

    飞凌嵌入式ElfBoard-Vim编辑器之GCC编译器的安装

    GCC,但软件包可能不全,为了确保有一个基本完善的本地编译环境,可安装build-essential软件包。在确保Linux能联网的情况下,在终端输入如下安装命令: elf@ubuntu:~$ sudo
    发表于 10-15 08:44

    cubemx+clion+gcc无法使用msh怎么解决?

    通过STM32CUMX配置RTTHREAD NANO ,用keil编译并且移植shell之后,输入键盘上下键无反应,而用clion+gcc编译后(修改过启动文件),只能打印version信息,无法显示msh和输入,两者除了启动文件以外,其余的配置基本相同,请问为啥gcc
    发表于 09-23 07:36

    为什么将 GCC 项目导入 NuEclipse 失败?

    为什么将 GCC 项目导入 NuEclipse 失败?
    发表于 09-01 08:05

    如何将GCC项目导入NuEclipse?

    如何将GCC项目导入NuEclipse?
    发表于 09-01 07:04

    CW32L010 MCU在VSCode+GCC+EIDE+JLink下的使用示例

    CW32L010 MCU 在VSCode+GCC+ EIDE + JLink 下的使用示例: 1、点击VSCode左边栏中的Extensions,在EXTENSIONS:MARKETPLACE搜索
    的头像 发表于 07-01 14:52 799次阅读
    CW32L010 MCU在VSCode+<b class='flag-5'>GCC</b>+EIDE+JLink下的使用示例

    cubemx+clion+gcc无法使用msh怎么解决?

    通过STM32CUMX配置RTTHREAD NANO ,用keil编译并且移植shell之后,输入键盘上下键无反应,而用clion+gcc编译后(修改过启动文件),只能打印version信息,无法显示msh和输入,两者除了启动文件以外,其余的配置基本相同,请问为啥gcc
    发表于 06-13 08:17

    BSP36 gcc_11.3.0编译错误的原因?怎么解决?

    /gcc/11.3.0-r0/recipe-sysroot-native/usr/bin/aarch64-fsl-linux/../../libexec/aarch64-fsl-linux/g
    发表于 03-27 08:19

    ubuntu24.04上安装gcc工具链出现报错怎么解决?

    虚拟机安装的ubuntu24.04.1,默认gcc版本13,从芯来官网下载了对应的gcc版本的工具链,到最后编译报错: riscv64-unknown-linux-gnu-gcc: fatal
    发表于 03-07 12:39

    深入探索GCC的attribute属性

    如果经常看Linux源码,一定会见过 attribute 属性,他在 Linux 里面出现的很多。 attribute 是 gcc 的扩展功能,它不属于标准C语言。 使用 attribute 可以
    的头像 发表于 02-13 10:05 786次阅读

    全球计算联盟GCC成立,安谋科技牵头编写白皮书发布

    ,重磅发布了包括2部白皮书、2部研究报告、1项标准项目合作成果以及案例集等在内的一系列丰硕成果。作为GCC理事单位及白皮书牵头参编的重要代表之一,安谋科技(中国)有限公司(简称“安谋科技”)受邀出席此次盛会,发表了主旨演讲,并参与了
    发表于 01-13 14:55 334次阅读
    全球计算联盟<b class='flag-5'>GCC</b>成立,安谋科技牵头编写白皮书发布

    MSP430 GCC用户指南

    电子发烧友网站提供《MSP430 GCC用户指南.pdf》资料免费下载
    发表于 12-05 14:51 0次下载
    MSP430 <b class='flag-5'>GCC</b>用户指南