思考:
对交叉编译不熟悉,一些事后感觉很简单的问题事前烦恼了很久。源代码的编译大致可以分为三个类,用cmake的,
用make的, 用脚本的。用cmake的最好改,其次是用脚本的,一般文档写得全。用make的往往是很简陋的,没文档,相关资料也少。
总结:
一.cartographer的Gmock GTest Glog模块的交叉编译
首先下载Gmock GTest Glog的源码,Gmock和GTest在github上的一个仓库中
修改cmakelist中修改
cmakelist中的设置
#告知当前使用的是交叉编译方式,必须配置
SET(CMAKE_SYSTEM_NAME Linux)
SET(TOOLCHAIN_DIR "/home/gzpeite/pettoolchain")
#指定编译工具,一定要设置
#或交叉编译器使用绝对地址
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabi-gcc)
#指定C++交叉编译器
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabi-g++)
#不一定需要设置
#指定交叉编译环境安装目录...
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
#从来不在指定目录下查找工具程序
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
#只在指定目录下查找库文件
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
#只在指定目录下查找头文件
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
二cartographer中的boost的iostream,首先在boost官网下载boost版本
我下的是boost_1.6的版本,不同的版本,流程不一样,
[http://www.boost.org](http://www.boost.org)
编译过程
1.首先运行boost解压目录下的
**./bootstrap.sh**
2.修改生成的**project-config.jam**文件
修改:
using gcc : arm : arm-none-linux-gnueabi-gcc ;
修改(这边不改也没事):
option.set prefix :(交叉编译器所在位置);
option.set exec-prefix :(交叉编译器所在位置)/bin ;
option.set libdir :(交叉编译器所在位置)/lib ;
option.set includedir :(交叉编译器所在位置)/include ;
如果编译boost时出现以下问题,按照如下流程可解决
看前面的 pkgconfig 。
就是他的东西。
pkgconfig 是一个命令程序,他通过一个通用的参数从 .pc 文件里面获取一些数据来帮助调用某个函数库的程序得到正确的编译参数。这是开发用的程序,如果你不需要开发编译程序。这部分都是 *-devel 包里面的数据。这些包卸载即可。
其实 pkg-config 就是个二传手而已。不过他提供了一个通用的参数获取方式,很多软件还是比较喜欢给他准备一个配置数据文件的。
网上给的建议