首页 > 代码库 > gcc/g++ 常用参数
gcc/g++ 常用参数
编译的步骤
参考:gcc参数详解
gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp]。 对应的参数是 -E
2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]。对应的参数是 -S
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]。对应的参数是 -c
4.连接目标代码,生成可执行程序[链接器ld]。无参数。
编译步骤举例
有三个文件f1.h、f1.cc、test.cc
内容分别为:
f1.h
void f1();
f1.cc
#include <iostream> #include "f1.h" using namespace std; void f1() { cout << "f1()" << endl; }
test.cc
#include <iostream> #include "f1.h" using namespace std; int main() { f1(); cout << "hello" << endl; }
编译链接过程如下:
[root@VM-127-178 gcc_test]# ls f1.cc f1.h test.cc [root@VM-127-178 gcc_test]# g++ -S f1.cc [root@VM-127-178 gcc_test]# g++ -S test.cc [root@VM-127-178 gcc_test]# ls f1.cc f1.h f1.s test.cc test.s [root@VM-127-178 gcc_test]# g++ -c f1.s [root@VM-127-178 gcc_test]# g++ -c test.s [root@VM-127-178 gcc_test]# ls f1.cc f1.h f1.o f1.s test.cc test.o test.s [root@VM-127-178 gcc_test]# g++ f1.o test.o [root@VM-127-178 gcc_test]# ls a.out f1.cc f1.h f1.o f1.s test.cc test.o test.s [root@VM-127-178 gcc_test]# ./a.out f1() hello [root@VM-127-178 gcc_test]#
常用参数
-o:生成的目标文件名称。如果没有-o则默认生成a.out。
-l :需要链接的库名称。即链接库文件去掉lib前缀和.so后的部分。如libev.so就是 -lev;libace.so就是 -lace。
-L :链接库文件的搜索路径。默认链接库的搜索路径为/usr/lib、/usr/lib64
-I :include头文件的搜索路径。默认头文件的路径为/usr/include
-g :增加调试信息。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。