gcc 编译C语言最全命令
gcc编译命令最简单的编译命令是: gccmain.c默认生成的可执行文件是a.out
如果需要指定输出文件,则需要使用如下的命令: gccmain.c–omain
使用-Wall选项可以输出所有的警告信息: gcc-Wallmain.c-omain
输出C源码的预处理结果, 使用-E选项,默认是输出控制台,可以将其重定向到文件保存: gcc-Emain.c>main.i
如果只想输出汇编代码而非二进制代码,使用-S: gcc-S main.c
使用-C(大写)选项只生成C程序对应的目标文件,但是不进行链接: gcc-Cmain.c
输出所有的中间文件, 使用-save-temps选项: gcc-save-tempsmain.c
与共享库进行链接,应使用-l选项再加上库程序的名字,例如,程序引用了math库中的pow函数: gcc-Wallmain.c-omain–lm
编译生成共享库时,为了保证所生成的库可以被加载到合法的任意地址,需要使用-fPIC选项,例如如下的命令生成一个名为test.so的共享库: gcc-c-Wall-Werror-fPICtest.c gcc-shared-otest.sotest.o
如果想查看编译器是怎么编译源程序的,以及每一步所使用的命令是什么,则应该使用-V选项: gcc-Wall-vmain.c-omain
使用-ansi可以指定编译器编译源码时遵循的语言标准,例如如下代码按照ISOC89对源码进行编译: gcc-Wall-ansimain.c-omain
有些时候警告中往往预示着一些潜在的错误,因此部分项目在编译时要求将警告当做错误看到,使用-Werror: gcc-Wall-Werrormain.c-omain
经过优化的代码调试时可能会出现找不到声明的变量、控制流程发生变化、有些语句被直接跳过等现象。总而言之,不可能对编译之后的代码进行调试。为了让编译器生成额外的信息以利于程序的调试(例如使用gdb),使用 -g 。 gcc-Wall-Werror–gmain.c-omain
使用-O0选项可以禁用所有编译器优化,使用-O1、-O2和-O3逐步打开更多的优化选项。-Og则在保证调试工作的同时完成了少量的优化。
如果有一些宏需要在编译时代入, 使用-D选项,例如如下的代码
#includeintmain(void){#ifdefMY_MACROprintf(" Macrodefined ");#endifcharc=-10;//Printthestringprintf(" TheGeekStuff[%d] ",c);return0;}使用如下的命令编译: gcc-Wall-DMY_MACROmain.c-omain则会打印输出相应的语句。
gcc/g++编译 cpp/c文件 生成可执行文件
g++编辑cpp生成exe编译重命名等:
g++–cHello.cc 编译文件,生成目标文件Hello.o
g++Hello.o–oabc 连接并重命名为可执行文件abc
g++Hello.cc 编译连接一起,生成a.out
g++Hello.cc–ohello生成a.out并命名为hello
多文件编译
$ g++ hellospeak.cppspeak.cpp -o hellospeakg++命令:
下面以helloAtom.cpp为例:
[cpp] viewplain copy#include using namespace std; int main() { cout