gcc是linux系统集成的编译器。在linux环境下编辑程序,首先需要克服的便是没有集成开发环境的一键式操作所带来的麻烦。这其中涉及命令行操作、编译选项的设定、文件依赖关系的书写(makefile)等问题。(若编译C++文件,则只需将下列命令的gcc换为g++,源文件的后缀应为 .c/.cpp/.c++/.cc等)。
2. GCC编译过程gcc -E test.c -o test.i # 预处理 gcc -S test.i -o test.s # 汇编 gcc -c test.s -o test.o # 编译 gcc test.o -o test # 链接3 常用参数 3.1 Gcc编译过程基本参数总结
-E -S -c -o filename -v3.2 创建静态库
Linux静态库命名规范,必须是lib[your_library_name].a,lib为前缀,中间是静态库名,扩展名为.a。编译静态库一共有两个步骤。
- 生成目标文件 staticmath.o
- 使用ar工具将目标文件打包成.a静态库文件。
gcc -c staticmath.c ar -crv libstaticmath.a staticmath.o3.3 创建动态库(共享库)
- 生成目标文件,此时要加编译器选项 -fPIC
- 生成动态库
gcc -c -fPIC dmath.c gcc dmath.o -shared -o libdmath.so gcc dmath.c -fPIC -shared -o libdmath.so3.4 链接库
特别要主要的是,编译器会首先找libstaticmath.so,如果有就链接它,如果没有就找有没有静态库libstaticmath.a。编译器是优先考虑共享库的,如果希望编译器只链接静态库,可以使用 -static选项。
gcc main.c -L. -static -lstaticmath -o main3.5 gcc链接库参数总结
-L -L. -I -lstaticmath -static -fPIC -shared -lxx
参考1:Linux下编辑、编译、调试命令总结——gcc和gdb描述



