gcc 编译器
GCC(GNU Compiler Collection)是GNU的C语言编译器,在Linux下编译C语言源代码几乎都会使用GCC编译器来实现。虽然GCC也能编译很多其它语言,不过我们一般还是用它编译C语言源代码。
安装GCC编译器
在Ubuntu下安装GCC编译器可以执行以下命令:
apt-get install build-essential
稍等一会后gcc、g++、make等常用构建工具就都会自动安装好了。
Windows下如果想要使用GCC则需要安装一个MinGW项目,但MinGW官方提供的安装器充满了bug而且又在外网,极难安装成功。MinGW个人比较推荐的安装方式是直接安装Qt的SDK和集成开发环境,安装过程中编译器选择MinGW(而非MSVC),Qt安装好后就自带了MinGW,我们将其配置到环境变量后就可以正常使用了。
GCC常用命令参数
这里我们列举一些常用的GCC命令行参数。
-c:编译生成目标文件-Dmacro[=defn]:定义宏-E:只做预处理而不编译-g:在生成的目标文件中添加调试信息,所谓调试信息就是源代码和指令之间的对应关系,在gdb调试和objdump反汇编时要用到这些信息-Idir:头文件所在目录-Ldir:库文件所在的目录-M和-MM:输出“.o文件: .c文件 .h文件”这种形式的Makefile规则,-MM的输出不包括系统头文件-o:指定文件名-O:编译优化-print-search-dirs:打印库文件的默认搜索路径-S:生成汇编代码-v:打印详细的编译链接过程-Wall:打印所有的警告信息-Wl,options:options是传递给链接器的选项
使用实例
编译静态库
#编译
gcc -c stack.c
#打包
ar rs libstack.a stack.o
#...省去目录操作步骤
#编译main.c和静态库链接到一起
gcc main.c -L. -lstack -Istack -o main
编译共享库
gcc -c -fPIC stack.c
gcc -shared -o libstack.so stack.o
#...省去目录操作步骤
gcc main.c -g -L. -lstack -Istack -o main
编译有正式版本的共享库
gcc -c -fPIC stack.c
#编译时使用的realname
ln -s libstack.so.1.0 libstack.so
gcc -shared -Wl,-soname,libstack.so.1 -o libstack.so.1.0 stack.o push.o pop.o is_empty.o
#执行时加载的soname
ln -s libstack.so.1.0 libstack.so.1
./main
查看头文件依赖
gcc -MM *.c
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。