Linux c常识

来源:互联网 发布:华为手机下载软件 编辑:程序博客网 时间:2024/05/17 02:59

1、gcc编译过程有四步(预处理、汇编、编译、链接)

gcc -E xxx.c                    表示预处理,生成*.i文件gcc -S xxx.i                    表示汇编,生成*.s文件gcc -C xxx.s                    表示只编译不链接,生成*.o文件gcc xxx.o                       就是链接文件gcc xxx.c -I pathname           编译查找头文件的目录在指定的pathnamegcc -static xxx.c               表示编译链接成静态文件gcc xxx.o  -l库名字 -L库的路径    将xxx.o与指定库链接gcc -fpic                       小模式,生成代码少gcc -ldl                        表示动态加载库文件gcc -std                        按标准c编译gcc -wall                       显示所有的警告gcc -werror                     显示警告和错误gcc -v                          显示gcc版本信息

2、预处理(在预处理阶段执行)

#line 200           表示这句后面开始行号从200开始计数#warning "字符串"    显示警告信息#error"字符串"       显示错误信息,后面不会编译代码#pragma GCC dependency 文件名    表示当前文件依赖于指定的文件名,如果指定的文件最后一次修改时间晚于但前文件,则产生警告信息。可以判断调用函数修改时间是不是比当前文件新。#pragma GCC poison 标识符    将标识符设置为毒药,如果后面代码使用的后面的标识符,则会报错。#pragma pack(整数n)    表示按照n的倍数进行对齐和补齐。超过4则按照4对齐。

3、预订义宏

__BASE_FILE__           获取正在编译的文件名 __FILE__                获取当前宏所在的文件名__LINE__                获取当前宏所在的行号__FUNCTION__            当前宏所在的函数名__DATE__                获取日期__TIME__                获取时间

4、一些常见的环境变量

PATH                    系统环境变量CPATH/C_INCLUDE_PATH    C头文件的附加搜索目录CPULS_INCLUDE_PATH      C++头文件附加搜索目录LIBRARY_PATH            链接库文件时查找目录LD_LIBRARY_PATH         运行时查找共享库的路径

5、库文件

1. 静态库文件(*.a)    使用时将代码直接复制到功能代码中,不用依赖库的源文件,但编译后文件比较大,修改和维护不方便。    生成静态库:        - 只编译不链接 gcc -c xxx.c生成xxx.o文件        - 生成静态库文件 ar   -r   libxx.a    xxx.o   表示把xxx.o文件插入到库libxx.a中2. 共享库文件(*.so)    使用时将代码的指针复制到功能代码中,编译后文件比较小,维护也方便,但依赖于库的源文件。    ldd  xxx执行文件        表示查看xxx链接的库    生成共享库:        - 只编译不链接:gcc -c -fpic  xxx.c        - 生成动态库:    gcc -shared xxx.o -o libxx.so
0 0
原创粉丝点击