zoukankan      html  css  js  c++  java
  • /usr/local/ssl/lib/libssl.a: error adding symbols: Bad value

    一、背景

    编译第三方库A的时候提示依赖openssl库。

    二、编译openssl库

    去官网下载最新版本的openssl-1.0.2l.tar.gz
    tar -zxvf openssl-1.0.2l.tar.gz
    cd openssl-1.0.2l

    ./config
    make
    make install

    完成编译,默认openssl的库安装在/usr/local/ssl目录下。

    三、引用openssl库

    第三方库【A】编译引用openssl的时候(make的时候),提示这个错误:

    /usr/local/ssl/lib/libssl.a: error adding symbols: Bad value

    四、基本原理

    我们都知道在生成一个动态库时需要指定-fPIC,这是创建动态库所要求的,共享库被加载是在内存中的位置是不固定的,是一个相对的位置。
    那么在生成静态库时通常不指定-fPIC, 可是在64bit编译使用静态库就会提示需要-fPIC重新编译该库。
    由于openssl编译静态库时,没有使用-fPIC选项,使得编译出来的静态库没有重定位能力。
    这样在64bit机器上编译出来的静态库如果不指定-fPIC选项几乎全部不能使用。 因此需要重新加上-fPIC从新编译openssl

    五、重新编译

    ./config -fPIC
    make depend
    make install

    六、注意

    删除openssl-1.0.2l,重新解压。
    因为编译过的环境里执行【重新编译】动作看起来无效。

    七、测试

    再make第三方库【A】的时候,没有报错,编译通过。

    使用其他静态库遇到类似问题,此方法同样适用。

  • 相关阅读:
    linux中断处理浅析
    linux页面回收浅析
    linux线程同步浅析
    剖析一个由sendfile引发的linux内核BUG
    比memcpy更快的内存拷贝
    linux内核SMP负载均衡浅析
    sscanf,snprintf
    mysql中实现longblob数据流式读写
    sscanf
    substr复制字符串的一部分
  • 原文地址:https://www.cnblogs.com/yoyotl/p/7424967.html
Copyright © 2011-2022 走看看