zoukankan      html  css  js  c++  java
  • linux上静态库链接的有关问题

    求大神,linux下静态库链接的问题
    有两个文件和一个库,a.c, b.c,libh.a,其中b.c里面会有调用libh.a的函数func1,现在将a.c, b.c,libh.a编译链接生成可执行文件,有下面几种操作方式
    1、直接编译生成a.o, b.o,然后链接libh.a,没有问题,正常
    2、将b.c打包成库libb.a,然后编译生成a.o,然后链接libh.a,libb.a,则a.o,libb.a, libh,a能链接通过,没有问题,正常
    现在的问题是不链接libh.a,问题来了
    1、直接编译生成a.o, b.o,然后链接则会报错,说FUNC1找不到
    2、将b.c打包成库libb.a,然后编译生成a.o,然后链接libb.a,则有两种情况
    1)如果a.c中不调用b.c中的函数,则能链接通过并生成执行文件,
    2)如果a.c中有调用b.c中的函数FUNC2,同链接不能通过。
    不知道三种情况下,为什么a.c中调不调libb.a中的函数会有两种不同的表现?难道不调用libb.a中的函数的时候,libb.a就不会去链接libh.a吗?求解

    linux 链接 静态库


    ------解决方案--------------------
    静态库中没有内容被引用的 .o 文件是不会参与链接的。

    转自:http://www.myexception.cn/c/1170327.html

    =============== Elta的分割线 ================

    这个错误最近经常出现,而且让人一头雾水。找到的这个答案讲解的也很清楚了。

    其实就是:如果有两个链接库,一个用到了另外一个的函数,而链接用的.o文件却没有用到这个函数,那么这个函数是不会被链接通过的。

  • 相关阅读:
    Google Authentication 机制原理
    ldap日志
    ldap + kerberos 整合
    kerberos
    U盘格式化后的恢复
    初始化脚本(Os_Init_Optimization.sh)
    拿到新机器,进行初始化和部署Nginx的过程
    python 列表生成式
    python 装饰器
    简单总结无线CPE、无线AP、无线网桥的不同之处【转】
  • 原文地址:https://www.cnblogs.com/elta/p/3435536.html
Copyright © 2011-2022 走看看