简介
gcc(GNU-C-Compiler),但不局限于c语言,还支持C++\JAVA\OBJECIVE C\PASCAL等,变成了GNU Complier Collection,即GNU编译器家族。
几个简单的指令
gcc hello.c -o hello
上面这句话在实际过程中分为4个步骤
gcc -E hello.c -o hello.i //1、预处理
gcc -S hello.i -o hello.s //2、编译(输出汇编代码)
gcc -c hello.s -o hello.o //3、汇编
gcc hello.o -o hello //4、链接
除此之外,多个指令编译指令如下
gcc hello1.c hello2.c -o hello
检错
gcc -pedantic hello.c -o hello//提示一些不符合ANSI/ISO标准的代码
gcc -Wall hello.c -o hello //尽可能提示更多的警告
gcc -Werror hello.c -o hello //将警告作为错误,终止编译
库文件链接
库文件链接需要知道,所需库文件的include文件目录和lib文件目录。
gcc –c –I include文件目录 hello.c –o hello.o//编译成可执行文件
gcc -L lib文件目录 -参数 hello.o -o hello//链接
文件链接包含两种类型
- 动态链接库(.so结尾):运行时动态加载
- 静态链接库(.a结尾):编译时静态加载
静态库链接时搜索路径顺序:
- ld会去找GCC命令中的参数-L
- 再找gcc的环境变量LIBRARY_PATH
- 再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程序内的
动态链接时、执行时搜索路径顺序:
- 编译目标代码时指定的动态库搜索路径
- 环境变量LD_LIBRARY_PATH指定的动态库搜索路径
- 配置文件/etc/ld.so.conf中指定的动态库搜索路径
- 默认的动态库搜索路径/lib
- 默认的动态库搜索路径/usr/lib
有关环境变量:
LIBRARY_PATH环境变量:指定程序静态链接库文件搜索路径
LD_LIBRARY_PATH环境变量:指定程序动态链接库文件搜索路径
网友评论