首页 > 系统相关 >嵌入式Linux编译器GCC的使用

嵌入式Linux编译器GCC的使用

时间:2022-12-24 18:55:42浏览次数:49  
标签:选项 gcc lib GCC 编译 编译器 Linux hello

1.3.1 GCC概述
1.3.2 GCC编译流程分析
1.3.3 GCC警告提示
1.3.4 GCC使用库函数
1.3.5 GCC代码优化

 

GCC除了能支持C语言外,目前还支持Ada语言、C++语言、Java语言、Objective C语言、PASCAL语言、COBOL语言,以及支持函数式编程和逻辑编程的Mercury语言等
GCC的编译流程分为了4个步骤,分别为
预处理(Pre-Processing)
编译(Compiling)
汇编(Assembling)
链接(Linking)

 

 

 

 

GCC使用的基本语法为:
gcc [option | filename]


预处理阶段
gcc –E –o [目标文件] [编译文件]
选项“-E”可以使编译器在预处理结束时就停止编译
选项“-o”是指定GCC输出的结果。


编译阶段
gcc –S –o hello.s hello.i
选项“-S”能使编译器在进行完编译之后就停止

 

 

GCC使用的基本语法为:
gcc [option | filename]


汇编阶段
gcc –c hello.s –o hello.o
选项“-c”把编译阶段生成的“.s”文件生成目标文件 “.o”
链接阶段
gcc hello.o –o hello
可以生成可执行文件

 

 

 

Wall类警告提示
(1)“-ansi”
该选项强制GCC生成标准语法所要求的告警信息,尽管这还并不能保证所有没有警告的程序都是符合ANSI C标准的。
(2)“-pedantic”
该选项允许发出ANSI C标准所列的全部警告信息,同样也保证所有没有警告的程序都是符合ANSI C标准的。

 

Linux函数库介绍
Linux中函数库包括两类:静态库和共享库。
静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库是在程序开始运行时被加载。
系统中可用的库都安装在/usr/lib和/lib目录下。库文件名由前缀lib和库名以及后缀组成。根据库的类型不同,后缀名也不一样。

 

 

 


相关路径选项
(1)“-I <dir>”
GCC使用缺省的路径来搜索头文件,如果想要改变搜索路径,用户可以使用“-I”选项。“-I<dir>”选项可以在头文件的搜索路径列表中添加<dir>目录。这样,GCC就会到指定的目录去查找相应的头文件。
(2)“-L <dir>”
选项“-L <dir>”的功能与“-I <dir>”类似,其区别就在于“-L”选项是用于指明库文件的路径。
gcc hello_sq.c –L/root/workspace/gcc/lib –lsunq –o hello_sq

 

使用不同类型链接库
使用不同类型的链接库的方法很相似,都是使用选项是“-l”(注意这里是小写的“L”)。该选项是用于指明具体使用的库文件。由于在Linux中函数库的命名规则都是以“lib”开头的,因此,这里的库文件只需填写lib之后的内容即可。
gcc -o dynamic -L /root/lq/testc/lib/dynamic.o -lmydynamic

 

GCC可以对代码进行优化,它通过编译选项-On来控制优化代码的生成,其中n是一个代表优化级别的整数。
虽然优化选项可以加快代码的运行速度,但对于调试而言将是一个很大的挑战。因为代码在经过优化之后,原先在源程序中声明和使用的变量很可能不再使用,控制流也可能会突然跳转到其他的地方,循环语句也有可能因为循环展开而变得到处都有,所有这些都将使调试工作异常艰难。

标签:选项,gcc,lib,GCC,编译,编译器,Linux,hello
From: https://www.cnblogs.com/cnetsa/p/17003201.html

相关文章

  • 嵌入式LinuxC语言开发工具
    C语言产生的历史背景嵌入式Linux下C语言的开发环境嵌入式Linux下的编辑器vi嵌入式Linux下的编译器GCC嵌入式Linux下的调试器GDB嵌入式Linux下的工程管理器makeEclipse集成......
  • WIN11下的Linux子系统WSL2(hyperV)与VMware多虚拟机共存安装
    第一步,启用hyperV1, 管理员模式运行PowerShell;2, 复制如下命令,输入、回车:Enable-WindowsOptionalFeature-Online-FeatureNameMicrosoft-Hyper-V-All3,如果是第一次安......
  • linux---passwd和shadow文件字段含义
    linux---passwd和shadow文件字段含义passwd/etc/passwd,存储账户、密码等信息,每行都包含7个字段,以":"分隔。使用命令查看解释:man5passwd简单记录如下:1.loginna......
  • linux 常用操作
    maven 环境变量exportM2_HOME=/data/maven/apache-maven-3.6.3exportCLASSPATH=$CLASSPATH:$M2_HOME/libexportPATH=$PATH:$M2_HOME/binjdkaptinstallo......
  • linux 中 提取或者删除注释行
     001、[liujiaxin01@PC1test]$lsa.txt[liujiaxin01@PC1test]$cata.txt##xxxyy##dddss##kkkqqq##mmnn1aA......
  • linux 中sed -r选项 支持扩展正则表达式
     001、[liujiaxin01@PC1test]$lsa.txt[liujiaxin01@PC1test]$cata.txt##测试数据##xxxyy##dddss##kkkqqq##mmnn1......
  • Linux 平台的最强 docker 管理面板 Portainer
    PortainerPortainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示......
  • linux 中sed命令删除数据的任意列
     001、[liujiaxin01@PC1test]$lsa.txt[liujiaxin01@PC1test]$cata.txt##测试数据1aA72bB......
  • linux 中 输入字母序列
     001、[liujiaxin01@PC1test]$lsa.txtb.txt[liujiaxin01@PC1test]$echo{a..e}##输出a-e的字母序列abcde[liujiaxin01@PC1test]$......
  • 英华学堂网课助手Linux版本
    首先我们下去GitHub把文件下载下来记得脚本地址:https://github.com/aoaostar/mooc/releases/latest这几个版本随便下哪个都可以,下载完之后我们通过xftp上传到服务器上......