写在前面
项目需要编译pcl库到arm平台,交叉编译Boost,Eigen3, Flann, 之后再编译pcl库的时候总是报错,让添加-fPIC选项重新编译。没细看以为是要在编译pcl库时添加-fPIC,前试后试了各种方法添加-fPIC选项,还是报错。搜错误代码得到的答案还是要添加-fPIC[Doge]。
step 1.
编译boost时添加-fPIC选项,此选项的意思是生成与地址无关的库文件,在编译其他依赖boost库的库文件时非常有用。
在boost_1_xx_x/tools/build目录下搜索gcc.jam,找到rule setup-fpic(targets * : sources * : properties *)这行,将其规则内的if $(link) = shared 改为if $(link) = shared || $(link) = static
保存退出。
step 2.
在boost_1_xx_x/目录下执行bootstrap
step 3.
如果要进行交叉编译则修改project-config.jam文件,将using gcc;
修改为using gcc : arm : arm-linux-gnueabihf-gcc-5 ;
注意空格
step4.
在pcl的编译中依赖与boost的mpi库,因此在project-config.jam文件中添加一行using mpi ;