Linux c常识

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           编译查找头文件的目录在指定的pathname
gcc -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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值