• unix c 01


    gcc编译器(代码的 预处理/汇编/编译/连接)

    C程序员一般写程序会定义 .c和.h两种文件
    .c文件(源文件)中一般放代码的实现,.h文件(头文件)中放 各种声明和定义。
      gcc -E __.c 只做预处理,可以生成.i文件
      gcc -c __.c 只编译不连接,生成.o文件
      gcc -S __.c 生成汇编,生成 .s文件
      gcc __.c 预处理、编译和连接
      gcc -o 指定目标文件名
      gcc -E __.c -oxx.i 生成.i文件
      gcc -Wall 可以显示更多的警告信息
    C语言#include 查找头文件的途径:
      1 ""会查找 当前目录(<>不查找)
      2 gcc -I 指定的目录
      3 系统目录(/usr/include等)
      4 用环境变量
        (CPATH/C_INCLUDE_PATH)配置的目录
    #pragma 可以额外新增一些功能,
    #pragma GCC dependency 文件名
    比较更新时间,如果 文件名比当前文件新,产生警告
    #pragma GCC poison 名字
      这个名字将被禁用,否则 产生 错误
    #pragma pack(正整数)
      可以设置 结构体的对齐和补齐的单位

    程序员可以把自己的代码打包成库文件,再提供一个头文件即可。
      库文件包括静态库和共享库(动态库),静态库的使用方式 是代码的复制,共享库的使用方式 是函数指针(函数地址)。
      静态库优点是 代码独立,效率稍好,缺点是 代码的空间太大,不利于修改和维护。
      共享库优点是 代码空间较小,修改、维护比较方便,缺点是 代码依赖于共享库文件。
      共享库的使用更加广泛。共享库 以.so结尾,静态库 以 .a结尾。
      1 静态库的使用步骤
       1.1 生成 静态库文件(.a)
         a 写源代码
         b 编译生成目标文件(.o)
         c 使用ar -r 命令生成静态库文件
          ar -r lib__.a __.o
       1.2 调用静态库文件
        前提:需要lib__.a和__.h文件
         a 写调用源代码(test.c)
         b 编译 (gcc -c)
         c 连接静态库文件,有三种方法:
         1) gcc __.o lib__.a (直接连接)
         2) 配置环境变量 LIBRARY_PATH,把库文件所在路径配进去,然后用 gcc __.o -l__(库文件名)
         3) gcc __.o -l__ -L库文件路径
       2 共享库的使用步骤
        2.1 生成 共享库文件(.so)
         a 写源代码
         b 编译生成目标文件(.o)
          gcc -c -fpic __.c (-fpic可以不加)
         c 生成共享库文件
          gcc -shared __.o -o lib__.so
        2.2 调用 共享库文件
         和静态库一样    
        注:想运行共享库程序,必须配置LD_LIBRARY_PATH.

  • 相关阅读:
    WebApi调用及发布
    List<T> 去除重复数据
    C#正则表达式去除XML标签
    SSIS 发送邮件
    域登录验证.net版
    js获取select选中的值
    ionic常见错误
    mac安装brew homebrew
    flutter ios编译报错集
    dart 格式化输出
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/3771091.html
Copyright © 2020-2023  润新知