gcc 常用命令

gcc编译器

$ gcc -o XX.exe XXX.c ddd.c

$ gcc -o XX.asm -S XXX.c   编译生成可执行文件,并执行程序,缺省的时候,gcc 编译出来的文件是a.out

-c   只编译并生成目标文件

-v/--v/--version      查看gcc版本号

-I  指定头文件目录,之间没有空格(例如:$ gcc -I./dir  xx.c xx.c -o app)

-g  包含调试信息

-On  n=0~3  编译优化,n越大优化得越多

-w   不生成任何警告信息

-Wall  提示更多警告信息

-D  编译时定义宏,之间没有空格

-E  生成预处理文件(只运行 C 预编译器)

-M  生成.c文件与头文件依赖关系以用于Makefile,包括系统库的头文件

-MM   生成.c文件与头文件依赖关系以用于Makefile,不包括系统库的头文件

GCC 是 GNU 的 C 和 C++ 编译器。实际上,GCC 能够编译三种语言:C、C++ 和 O
bject C(C 语言的一种面向对象扩展)。利用 gcc 命令可同时编译并连接 C 和 C++
源程序。

GCC 可同时用来编译 C 程序和 C++ 程序。一般来说,C 编译器通过源文件的后缀
名来判断是 C 程序还是 C++ 程序。在 Linux 中,C 源文件的后缀名为 .c,而 C++ 源
文件的后缀名为 .C 或 .cpp。但是,gcc 命令只能编译 C++ 源文件,而不能自动和 C
++ 程序使用的库连接。因此,通常使用 g++ 命令来完成 C++ 程序的编译和连接,该程
序会自动调用 gcc 实现编译。

$ g++ -o a(exe文件) XX.C(源文件)  调用 g++ 命令编译、连接并生成可执行文件

*nm   查看目标文件中的符号(全局变量、全局函数等)(例如:生成的app。$nm app查看app中使用的变量、函数)

*objdump  用于生成反汇编文件,主要依赖objcopy实现,a.out编译时需要加-g,(例如:-g -o生成的app。$objdump -dSsx app >file,调试信息重定向到file文件)

*ar  打包生成静态库

*as  汇编器

*ld  链接器

 *ranlib  为静态库文件创建索引,相当于ar命令的s选项

*readelf  解读ELF文件头

原文地址:https://www.cnblogs.com/tangtangde12580/p/8031865.html