• Linux GCC编译器套件和动、静态库的简单创建及使用格式

      • gcc识别文件扩展名
        • .c C语言文件
        • .i 预处理后的c语言文件
        • .C、.cc、.cp、.cpp、.c++、.cxx C++语言文件
        • .ii 预处理后的C++语言文件
        • .S 汇编文件
        • .s 预处理后的汇编文件
        • .o 编译后的目标文件
        • .a 静态链接库
        • .so 动态链接库
      • gcc命令
        • 格式 gcc/g++
        • -D 指定宏
        • -On 优化等级,n优化级别
        • -o 指定生成文件名
        • -E 只预处理
        • -S 只预处理和编译
        • -c 只预处理、编译、汇编
        • -Wall 生成所有级别警告信息
        • -w 关闭所有警告
        • -include file 插入文件
        • -Dmacro[=def] 将marco的宏定义为def
        • -Umacro 取消宏定义(#undef macro)
        • -v 显示配置命令(预处理器、编译器的版本号)
        • -Idir 将dir目录加入头文件搜索列表且优先搜索
        • -Ldir 将dir目录加入库文件目录列表且优先搜索
        • -lname 链接name的库
        • -static 链接静态库
        • -shared 链接动态库
        • -g 在可执行文件中加入标准调试信息
        • ar命令归档:ar -rc <生成的档案文件名><.o文件名列表>
          • 归档文件一定以lib打头 .a结尾
      • 编译过程
        • 预处理->编译->汇编->链接
    • 动态库与静态库
      • 静态链接
        • 含义:由链接器在链接时将库的内容加入到可执行程序中
        • 特点
          • 优点:对运行环境的依赖性较小,具有较好的兼容性
          • 缺点:生成的程序比较大,需要跟过的系统资源,再装入内存时消耗更多的时间。库函数更新,必须重新编译应用程序
        • 制作:gcc -c *.c -o *.o;ar rc lib*.a
        • 使用:gcc -o * *.c -L/… -l* -I/…
      • 动态链接
        • 含义:连接器在链接时仅仅建立于所遇库函数的直接连接关系,在程序运行时才将所需资源调入可执行程序
        • 特点
          • 优点:在需要的时候才会调入对应的资源函数简化程序的升级;有着较小的程序体积 实现京城之间的资源共享
          • 缺点:依赖动态库,不能独立运行 动态库依赖版本问题严重
        • 制作:gcc -shared *.c -o *.so
        • 使用:
          • gcc -o * *.c -L/… -l* -I/…
            • 编译找到库函数,但链接找不到库:export LD_LIBRARY_PATH=./:/OPT:$LD_LIBRARY_PATH 再 ./…
          • cp *.so /…  gcc *.c -o * -l*
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值