linux GCC环境,boost在编译时未加-fPIC参数,导致如果有共享库使用boost静态库,会报如下错误:
relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC

如果使用automake编译,可以通过CPPFLAGS将-fPIC加进去。

针对boost_1_53_0版本,修改tools/build/v2/tools/gcc.jam,注释掉387行:

     #if $(link) = shared

可以打开-fPIC

准备向boost提交这一BUG:
https://svn.boost.org/trac/boost/newticket注:这是默认规则,因为automake编译也不会针对静态库加-fPIC,如果是自己写automake,则可以在Makefile.am中加上:

AM_CXXFLAGS += -fPIC

如果是第三方库的,则使用CPPFLAGS传进去。

附:boost编译安装方法

说明:下面内容仅针对Linux环境(boost官网为:http://www.boost.org/,可从这里下载它的源代码包,这里要求下载.tar.gz包,而非.7z、.zip或bz2包)。

在当前目录下,解压boost库,如:
tar xzf boost_1_52_0.tar.gz
完成后,会在当前目录下新生成一个boost子目录boost_1_52_0,进入boost_1_52_0子目录,可以看到一个bootstrap.sh,执行它:
./bootstrap.sh
执行成功后,会在当前目录下生成一个可执行程序b2,使用它来完成对boost的编译,b2的命令行参数为:
./b2 install --prefix=PREFIX


完整脚本,不需要的组件使用--without去掉,如不需要python:--without-python

#

# install boost

#

printf "\n\033[1;33minstalling boost\033[m\n"

tar xzf $boost.tar.gz

cd $boost

#./bootstrap.sh --show-libraries

./bootstrap.sh --without-icu --without-libraries=python,graph,graph_parallel,mpi,wave

if test $? -ne 0; then

exit 1

fi

./b2 install threading=multi --prefix=$THIRD_PARTY_HOME/boost --without-python --without-graph --without-graph_parallel --without-mpi --without-wave

printf "\n\033[1;33m./b2 install return $?\033[m\n"

cd -

https://svn.boost.org/trac/boost/ticket/8673

boost编译BUG的更多相关文章

  1. boost编译随笔

    boost下载地址 编译 生成bjam.exe 1.下载boost源码,可以直接使用上面给出的1.60.0版本 2.解压下载到的boost文件,例如解压到 x:\boost_1_60_0 3.使用Vi ...

  2. ubuntu下boost编译安装

    ubuntu下boost编译安装 boost 安装 1.依赖安装 apt-get install mpi-default-dev libicu-dev python-dev python3-dev l ...

  3. c/c++ 多线程 ubuntu18.04 boost编译与运行的坑

    多线程 boost编译与运行的坑 背景:因为要使用boost里的多线程库,所以遇到了下面的坑. 系统版本:ubuntu18.04 一,安装boost 1,去boost官网下载 boost_1_XX_0 ...

  4. windows系统,boost编译安装

    windows系统,boost编译安装vs2017 1.下载https://www.boost.org/users/download/下载windows对应的zip包解压 2.配置vc环境变量我的是: ...

  5. boost编译配置及简单使用

    boost编译配置及简单使用 1.下载 http://www.boost.org/ 2.编译: A.解压 boost_1_55_0.zip 到boost路径 B.运行 bootstrap.bat. 会 ...

  6. 「caffe编译bug」 undefined reference to `boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11

    CXX/LD -o .build_release/tools/test_net.binCXX/LD -o .build_release/tools/convert_annoset.binCXX/LD ...

  7. 爆一个VS2015 Update1更新带来的编译BUG【已有解决方案】

    一个编译的BUG,在原生的VS2015中没有问题,但更新至VS2015 Update1之后就有了,大概是Update1用了新的编译器,害得我好苦.经测试,VS2013 Update5中也存在这个问题, ...

  8. boost 编译,windows平台

    下载Boost及生成bjam.exe文件 到Google网站搜索下载boost_1.52版本库,下载完成后,解压到X:下,这个地址自己随便定义.在解压的文件中搜索build.bat文件,把它所在的目录 ...

  9. windows下boost编译(vs2010)

    1.首先在官网上下一个boost的版本( http://www.boost.org): 2.解压到D:\mine (D:\mine\boost_1_66_0) 3.编译安装boost boost_1_ ...

随机推荐

  1. POJ 1611并查集

    我发现以后写题要更细心,专心! #include<iostream>#include<algorithm>#include<stdio.h>#include< ...

  2. screen&tmux快捷键

    screen Key 快捷键 Action 动作 Notes 备注 Ctrl+a c new window 新窗口   Ctrl+a n next window 下一个窗口 I bind F12 to ...

  3. Spring与web.xml

    出处:http://blog.csdn.net/u010796790 在web.xml配置监听器 ContextLoaderListener (listener-class) ContextLoade ...

  4. BZOJ2034 [2009国家集训队]最大收益

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  5. angularjs file upload插件使用总结

    之前由于项目需要,决定使用angularjs做前端开发,在前两个项目中都有文件上传的功能,因为是刚接触angularjs,所以对一些模块和模块间的依赖不是很了解.都是由其他大神搭好框架,我只做些简单的 ...

  6. 图像处理检测方法 — SIFT和SURF

    0.特征与匹配方法总结汇总对比 参考网址:http://simtalk.cn/2017/08/18/%E7%89%B9%E5%BE%81%E4%B8%8E%E5%8C%B9%E9%85%8D/#ORB ...

  7. Hibernate学习---第七节:关联关系

    一.关联关系一对一外键(双向) 1.实体类,代码如下: package learn.hibernate.bean; import java.util.Date; /** * 持久化类设计 * 注意: ...

  8. Git_错误_01_failed to push some refs to 'git@github.com

    在使用git 对源代码进行push到gitHub时可能会出错,信息如下 此时很多人会尝试下面的命令把当前分支代码上传到master分支上. $ git push -u origin master 但依 ...

  9. hibernate复习第(二)天

    今日要点: 关联映射 多对一(Employee - Department) 一对多(Department - Employee) 一对一(Person - IdCard) 多对多(teachet - ...

  10. L101

    It isn't where you came from. It's where you're going that counts.起点并不重要,重要的是,你要去往何方.Nothing is impo ...