关于[详细讲解gcc],今天就分享给大家。如果对你有帮助,别忘了关注这个网站。
内容导航:1。详细讲解gcc:用几张图轻松理解GCC2,详细讲解gcc,总结gccg的常用指令。1.详细讲解gcc:用几张图轻松理解GCCGCC程序的编译过程。
GCC通用后缀
GCC使用方法
最基础最高端的方法。
在Linux环境中使用gcc命令查看帮助信息
#在此列出man的用法。输入下一行,上一行,下一行,home。
命令使用
GCC参数摘要
GCC通用参数
编译过程参数
存储库选项参数
linux下的静态链接库和动态链接库格式
#静态链接库。a
默认情况下,编译是动态链接。
将静态链接库编译成目标文件。oar crv
优化选项
代码优化的越多,实践和思考的越多,越能发现C/C++的优势。
2、详细讲解gcc、gccg常用指令摘要gcc是一个与linux系统集成的编译器,用于在linux环境下编辑程序。首先需要克服的是没有集成开发环境的一键操作带来的麻烦,涉及命令行操作、编译选项设置、文件依赖编写(makefile)等问题。本文主要介绍gcc的常用命令行参数及其对应的函数(如果编译一个C文件,你只需要把下面命令的gcc改成G,源文件的后缀应该是。C/。cpp/。c /。cc等。).今天,边肖会来。下面来看看更详细的回答吧!
详细讲解gcc
Gcc是一个用于linux系统集成的编译器。在linux环境下编辑程序,首先要克服的是没有集成开发环境的一键式操作带来的麻烦。这包括命令行操作、编译选项的设置和文件依赖关系的编写。本文主要介绍gcc的常用命令行参数及其对应的功能。(如果编译C文件,只要把下面命令的gcc改成G就行了,源文件的后缀应该是。C/。cpp/。c /。cc等。)
基本格式:gcc[选项]文件1文件2...//如果不加参数,按照默认参数依次编译、汇编、连接,生成的可执行文件命名为a.out
公共参数:-E //仅执行预处理操作。
-S //仅执行到编译操作完成,并且汇编文件(。s或。asm)是不用汇编操作生成的,内容是汇编语言。
-c //编译和汇编没有链接,也就是只有可重定位的目标文件(。o)生成为二进制文件,不会生成完整的可执行文件。
-o filename //将操作后的内容输出到filename指定的文件。
-static //对于支持动态链接的系统,使用静态链接代替动态链接进行链接操作。
-g //在编译时生成与调试相关的程序信息(针对gdb)
-save-temps///生成编译过程的中间结果文件(包括预处理文件(x.ii)、汇编代码(x.s)、目标文件(x.o)和最终的可执行文件)。
-I PATH //在PATH指定的目录中查找相关的包含文件。
-lxx //其中xx是指定的函数库。对于Linux环境下的函数库,静态库后缀是。一、动态库后缀是。所以,而且一般库名是libxx.a或者libxx.so如果添加了libm.so库,参数-lm(不包括lib和后缀。一个so)被使用。
-L PATH //在PATH指定的目录下查找相关的库文件,即-lxx指定要链接的库,-L指定查找库的路径。未指定时,搜索默认库函数路径。
-std=xx //指定用于编译的语言标准。
-x language //指定要编译的文件的语言,而不是由编译器根据文件后缀来判断。也就是默认情况下,gcc根据文件后缀判断使用的编程语言。比如用文件名hello作为源文件名是不合适的,应该用hello.c。
-Wall //输出一些简单的错误和一些关于可能问题的警告。
-Wextra//output-Wall中未包含的警告等。
-err//将警告视为错误输出
-D name=definition //添加宏定义。如果未指定def,则默认为1。
-O1和-O2 //指定编译器的优化级别。优化级别越高,执行效率越好,但优化会改变原程序结构,使其汇编难以理解。
//缓冲区溢出实验可能需要的一些选项。
-f stack-protector -fno-stack-protector//是否开启堆栈保护,这里的保护是在返回地址前增加一个验证值,保证返回地址不被破坏。
-z execstack //启用可执行堆栈,默认情况下禁用。
//(echo 0 & gt;/proc/sys/kernel/randomize _ va _ space关闭地址随机化,这是一个单独的命令,操作需要root权限)。
用一个简单的Hello World来看看这些指令的具体用法:
# include & ltiostream & gt
使用命名空间std
int main()
{
cout & lt& lt“你好!”& lt& ltendl
返回0;
}
上面main.cpp的编译过程如下:
以下是一些常用的说明:
指令1:将源文件编辑成可执行文件。
g主页面
执行这个命令后,目录中又多了一个文件:a.out
事实上,我们还可以为生成的文件指定一个名称:
G main.cpp -o main//在这里指定生成文件的名称为main。
执行该命令后,main文件确实在目录中生成:
指令2:编译文件并输出到main.s
g-s-o main . s main.cpp//编译main.cpp,保存中间。使用-o选项将s文件保存到main.s。
事实上,上述指令可以采用更简洁的格式:
g-S main . CPP & gt;Main1.s//表示将编译后的文件写入Main1.s。
指令3:生成一个可重定位的目标文件(即编译后的文件)
g-C main.cpp//生成main.o不带链接,也就是只做预处理,编译,汇编不带链接。
指令4:输出一些简单的错误和一些关于可能问题的警告。
G -Wall main.cpp -o output//将输出文件名指定为output。
为了让编译器提示错误,此时先修改上面的helloword程序,删除cout语句后的分号。
此时,编译器会给出一条警告消息:
指令5:通过-save-temps选项输出所有中间代码。
g -save-temps main.cpp
为了演示第二个命令的效果,此时会清除所有文件,只保留main.cpp文件。
执行上述指令后:
构建目录中确实有几个中间文件。
分享完一顿饭牛皮的内容,记住关键词:同义词详解,电压力锅工作原理详解,二胡北京有个金太阳详解,北京有个金太阳详解,月亮陨石视频详解。