boost编译BUG
2024-08-30 12:56:09
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
最新文章
- HTML5中引入的关键特性
- Java操作redis简单示例
- 魅族手机(魅蓝note)无法作为调试设备连接到mac问题的解决
- 使用Js脚本 修改控制IE的注册表相关设置(activex等)
- 夺命雷公狗---DEDECMS----28dedecms浏览次数的完成
- scala的继承
- ios模拟器未能安装此应用程序
- ASP.NET中的状态保持(转载)
- java的变量
- TreeGrid( 树形表格)
- J2SE知识点摘记(九)
- shell命令批量杀死MySQL连接进程
- Tenured 区并发垃圾回收器CMS介绍
- ABP学习笔记
- 史上最全最强Charles截取手机https协议数据包教程(附上利用此技术制作最近微信比较火的头脑王者辅助外挂)!
- pig中查询top k,返回每个hour和ad_network_id下最大两个记录(SUBSTRING,order,COUNT_STAR,limit)
- 根据元素类型获取tuple中的元素
- ElasticSearch(六)底层索引控制
- iOS关于md5 32位加密
- wpf 水波进度条 用户控件
热门文章
- shell文件相关指令
- 在Delphi中使用ShellExecute(handle, 'open', PChar(fname),nil, nil, SW_HIDE)函数应注意的问题
- Spark操作算子本质-RDD的容错
- spring.jar的下载地址
- Hibernate错误及解决办法
- SpringBoot_04_热部署
- 3_observer
- I.MX6 Busybox watchdog
- LeetCode:Add Digits - 非负整数各位相加
- netsh wlan start hostednetwork