zoukankan      html  css  js  c++  java
  • Linux下gcc使用与动态库静态库制作

    1. gcc工作流程

      1. 预处理 gcc -E
      2. 编译 gcc -S
      3. 汇编 gcc -c
      4. 链接 没参数

    2.常用参数
      -o: 指定生成的文件的名字
      -D: 在编译的时候定义宏(控制log的输出)
      -I: 指定头文件的路径
      -g: gdb调试的时候需要添加该参数
      -O: 编译优化, 3个等级 -O(1-3)
      -Wall: 编译期间输出警告信息

    3. 制作静态库
      1. 命名规则: lib静态库名字.a
      2. 制作步骤:
        1). 生成二进制代码文件.o
          gcc -c *.c
        2). 打包(将所有的.o文件)生成.a静态库文件
          ar rcs 静态库的名字 *.o
        3). 使用: (-L+库文件所在路径 -l+库名字 -I+头文件目录)
          gcc test.c -LlibPath -llibname -o test.out -Iinclude_dir

    4. 制作动态库
      1). 动态库后缀: .so -- lib动态库名字.so
      2). 制作步骤:
        1). 生成与位置无关的代码(.o)
          gcc -fPIC -c *.c -Iinclude_dir
        2). 将.o打包生成.so文件
          gcc -shared *.o -o libmytest.so
      3). 使用(-L+库文件所在路径 -l+库名字 -I+头文件目录)
        gcc test.c -L./lib -lmytest -I./inlude -o test.out

      4).应用程序不能执行, 动态链接器连接不到自己制作的库
        1>. 临时设置的方法:
          export LD_LIARARY_PATH=库文件所在目录
        2.> 永久设置的方法:
          1. 找到动态链接器的配置文件: /etc/ld.so.conf
          2. 在该文件中添加动态库的目录(绝对路径)
          3. 更新: sudo ldconfig -v

  • 相关阅读:
    springboot小技巧(转)
    spring boot项目如何测试,如何部署
    thymeleaf模板的使用(转)
    springboot+多数据源配置
    springboot+shiro
    springboot+jpa+thymeleaf增删改查的示例(转)
    SpringBoot ( 七 ) :springboot + mybatis 多数据源最简解决方案
    tcpdump查看某个端口数据
    oracle完全删除表空间
    检测python进程是否存活
  • 原文地址:https://www.cnblogs.com/djh5520/p/14569379.html
Copyright © 2011-2022 走看看