zoukankan      html  css  js  c++  java
  • 如何解决 error adding symbols: Bad value 问题

    //by sven

    最近遇到一个关于动态库和静态库使用的一个问题。


    我们都知道在生成一个动态库时需要指定-fPIC,这是创建动态库所要求的,共享库被加载是在内存中的位置是不固定的,是一个相对的位置。


    那么在生成静态库时通常不指定-fPIC, 可是在64bit编译使用静态库就会提示需要-fPIC从新编译该库:


    /opt/mipsel-openwrt-linux-4.8.3/mipsel-4.8.4/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/../lib/gcc/mipsel-openwrt-linux-uclibc/4.8.3/../../../../mipsel-openwrt-linux-uclibc/bin/ld: ../lib/libmad.a(stream.o): relocation R_MIPS_26 against `mad_bit_init' can not be used when making a shared object; recompile with -fPIC
    ../lib/libmad.a: error adding symbols: Bad value
    collect2: error: ld returned 1 exit status
    make: *** [libavio.so] Error 1

    原因就是由于libmad编译静态库时,没有使用-fPIC选项,使得编译出来的静态库没有重定位能力。这样在64bit机器上编译出来的静态库如果不指定-fPIC选项几乎全部不能使用。
    因此需要重新加上-fPIC从新编译libmad

    这样就可以使用该静态库了,使用其他库类似问题同样适用。



  • 相关阅读:
    DVWA系列のSQL注射
    DVWA系列のCSRF&文件包含
    PHPSTORM+Xdebug配置
    Django 从入门到忘记学习笔记
    <双十一特辑> 模拟登录学校教务处爬取全校女生资料和头像
    zzcms7.2漏洞挖掘学习
    laravel5.3搭建过程中出现问题
    kali-linux简单学习
    linux学习二(小随笔)
    linux学习一
  • 原文地址:https://www.cnblogs.com/klausage/p/14763676.html
Copyright © 2011-2022 走看看