zoukankan      html  css  js  c++  java
  • Linux 使用静态库注意事项

    1. 静态库一定要放在生成文件后面

    gcc main.c -o main libhello.a

    2. 使用静态库时一定要连接所有用到的静态库

    gcc main.c -o main liba.a libb.a libc.a

    a依赖于b, b依赖于c; 注意多个连接静态库的顺序 规则:越底层的库放在越后面

    3. 静态库动态库相结合使用

    gcc main.c –L/usr/local/lib –lworld –o main liba.a

    4. 静态库链接顺序例子

    1. world.c

    #include<stdio.h>
    
    void world(void)
    {
      printf("world!
    ");  
    }

    2. hello.c

    #include<stdio.h>
    
    void world(void);
    void hello(void)
    {
        printf("hello.
    ");
        world();
        
    }

    4. main.c

    void main()
    {
       hello();
    }

    5. 编译成目标文件

    gcc -c hello.c world.c

    6.生成静态库

    ar -crv  libhw.a hello.o world.o

    7. 调用静态库生成可执行文件

    gcc -o main main.c libhw.a

    8. 错误链接方式

    生成对象和静态库顺序错误

    静态类库在链接时候顺序不对,libhello.a 依赖于libworld.a

    总结如下:

    1. 静态库和动态库中只有你写的代码,你所调用的所有外部函数的代码都不会编译到静态库中,所有编译动态库和静态库时,不需要指定其他库的库文件路径,只需要指定其他库的头文件路径即可;

    2. 链接静态库的顺序一定是从新到旧,动态库链接顺序没有要求

    3. 静态库位于生成对象之后

  • 相关阅读:
    数据分析05 /pandas的高级操作
    ABP之应用服务(2)
    ABP之应用服务(1)
    ABP之仓储
    ABP之创建实体
    ABP之框架体系
    ABP之项目的搭建
    2018年,加油!!!
    WF的简单使用
    WCF之通信工厂的简单使用
  • 原文地址:https://www.cnblogs.com/flyinggod/p/8028103.html
Copyright © 2011-2022 走看看