个人资料
GNU-c-compiler (gcc ),但不仅限于c语言,还支持C JAVAOBJECIVE CPASCAL等,用于GNU Complier Collection,即GNU编译器系列
一些简单的命令
gcc hello.c -o hello
上面的话在实际过程中分为四个步骤
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 //警告作为错误退出编译
库文件链接
指向库文件的链接必须知道所需库文件的包含文件目录和lib文件目录。
gcccI包含文件目录hello.co 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环境变量:指定程序动态链接库文件的搜索路径
参考