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

原文地址:https://www.cnblogs.com/djh5520/p/14569379.html