Linux GCC/G++ 基础(1) 之 - LinuxGCC/G++编译器

Linux GCC/G++ 基础之 - LinuxGCC/G++编译器

编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读和运行的低级

机器语言的程序。调试器是用于查找源代码中的错误,测试源代码和可执行文件的工具。GNU项目提供了GCC编译器、G++编译器和GDB调试器,这些程序是在Linux系统上使用C和C++语>言进行开发的重要工具。本篇将介绍这些工具的安装和使用方法。

GCC/G++编译器
GCC是GNU项目中的一个子项目,最初为用于编译C语言的编译器。随着GNU项目的发展,

GCC已经成为了能编译C、C++、Ada、Object C和Java等语言的GNU编译器家族,同时还可执>行跨硬件平台的交叉编译工作。G++ 则是专门用于编译C、C++语言的编译器。C和C++语言正
在不断发展,为了保持兼容程序语言的最新特性,开发者通常选择GCC来编译C语言编写的源
代码,选择G++来编译C++源代码。

GCC/G++编译器的安装
安装或更新GCC和G++可在GNU项目的 [官网- www.gnu.org ](www.gnu.org) 下载相应的安装包,也可以使用YUM 软件包管理器安装。其安装命令如下:

yum install make //安装make程序

yum install gcc //安装GCC编译器

yum install gcc-c++ //安装G++编译器

注意:如果安装过程中提示需要选择编译器版本,可根据当前硬件平台选择最新发布的版
本,如果提示需要安装其他相关软件包,请一并安装。

GCC/G++编译命令
GCC/G++编译器没有图形界面,只能在终端上以命令行的形式运行。编译命令由命令名、选项和源文件名组成,格式如下:

gcc [-选项1-] [-选项2-] .... [-选项n-] <源文件名>

g++ [-选项1-] [-选项2-] .... [-选项n-] <源文件名>

命令名、选项和源文件名之间使用空格分隔,一行命令中可以有多个选项,也可以只有一个选项。文件名可以包含文件的绝对路径,也可以实用相对路径。如果文件名不包含路径,那么源文件被视为在于工作目录中。如果命令中不包含输出的可执行文件名称,那么默认情况下将在工作目录中生成后缀为.out的可执行文件。
GCC/G++编译选项
GCC拥有一百多个编译选项。对于C语言和C++语言,G++与GCC的编译选项基本相同。常用的一些编译选项如下:
编译选项说明
-c只进行预处理、编译和汇编,生成.o文件
-S只进行预处理和编译,生成.s文件
-E只进行预处理,产生预处理后的结果到标准输出
-C预处理时不删除注释信息,常与-E同时使用
-o指定目标名称,常与-c、-S同时使用,默认是.out
-include file插入一个文件,功能等同源代码中的#include
-Dmacro[=defval]定义一个宏,功能等同源代码中的#define macro[defval]
-Umaacro取消一个宏,功能等同源代码中的#undefine macro
-Idir优先在选项后的目录中查找包含的头文件
-Iname链接后缀为.out的动态链接库来编译程序
-Ldir指定编译搜索库的路径
-g编译器编译时加入debug信息
-pg编译器编译时加入信息给gprof
-share使用动态库
-static禁止使用动态库
GCC/G++编译器的执行过程
编译器的执行过程可总结为4步:预处理、编译、汇编和连接。在预处理过程中,编译器会对源代码中的头文件和预处理语句进行分析,生成以.i为后缀的预处理文件。编译过程是将输入的源代码编译为以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,在便已后成成以.o为后缀的目标文件。最后执行连接过程,所有的目标文件被安排在可执行程序中的恰当位置。同时,该陈旭所调用到的库函数也从各自所在的档案库中连到合适的地方。

  • 本博客文章除注明转载外,均为原创或者翻译。
  • 本博客文章欢迎各种形式的转载,但请转载者注明文章出处。
  • 本博客原创和翻译文章均使用markdown格式发布,如需 源码 转载请留言。
  • 本文标题:Linux GCC/G++ 基础(1) 之 - LinuxGCC/G++编译器
  • 本文链接:http://www.cnblogs.com/banshine/p/5041584.html

转载于:https://www.cnblogs.com/banshine/p/5041584.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
make for plat=atlas310 cross=aarch64-ascend310-linux-gnu- LDFLAGS=-Wl,--gc-sections -static -L/home/257916/server/test/v1.1/Trunk/build/../src/thirdpart/libs/atlas310 -L/home/257916/server/test/v1.1/Trunk/build/../lib/atlas310 -ldw -lbs -lpthread -lm EXTRA_CFLAGS=-DSVN_VERSION="\"64670"\" -I /net -DOSA_MODULE_NAME=Spectrum-Convert@64670 -DBUILD_DATE="\"Mon, 24 Jul 2023 19:48:54 +0800"\" CFLAGS=-D_GNU_SOURCE -I/home/257916/server/test/v1.1/Trunk/build/../include -I/home/257916/server/test/v1.1/Trunk/build/../src/base/include -I/home/257916/server/test/v1.1/Trunk/build/../src/base/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/decode/include -I/home/257916/server/test/v1.1/Trunk/build/../src/decode/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/fourier/include -I/home/257916/server/test/v1.1/Trunk/build/../src/fourier/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/include -I/home/257916/server/test/v1.1/Trunk/build/../src/service/include -I/home/257916/server/test/v1.1/Trunk/build/../src/service/test/include -I/home/257916/server/test/v1.1/Trunk/build/../src/draw/include -I/home/257916/server/test/v1.1/Trunk/build/../src/draw/test/include -I/home/257916/server/test/v1.1/Trunk/build/../tools/include -fPIC -ffunction-sections -fdata-sections -g -Wall -O1 -c -o ############################################################ mkdir -p /home/257916/server/test/v1.1/Trunk/build/../bin/atlas310 aarch64-ascend310-linux-gnu-g++ -o draw test/src/draw_pic_test.o -Wl,--gc-sections -static -L/home/257916/server/test/v1.1/Trunk/build/../src/thirdpart/libs/atlas310 -L/home/257916/server/test/v1.1/Trunk/build/../lib/atlas310 -ldw -lbs -lpthread -lm /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: Relocations in generic ELF (EM: 62) /opt/Atlas310-ascend/toolkit/toolchain/hcc/bin/../lib64/gcc/aarch64-target-linux-gnu/7.3.0/../../../../aarch64-target-linux-gnu/bin/ld: test/src/draw_pic_test.o: error adding symbols: file in wrong format collect2: error: ld returned 1 exit status make[1]: *** [draw] Error 1 make[1]: Leaving directory `/home/257916/server/test/v1.1/Trunk/src/draw' make: *** [draw] Error 2
07-25

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值