交叉编译eigen3.2.10至ARM架构

交叉编译eigen3.2.10至ARM架构

1.下载交叉编译链

PC机为x86架构,目标平台为ARM架构,首先需要安装x86至ARM平台的交叉编译链。需要注意的是,编译链上C库的版本需要和目标平台上的C库版本兼容。我起初参考其他博客直接apt-get工具链,之后交叉编译会报libc的问题,所以最好查看目标平台的C库版本后去linaro官网下载对应版本的交叉编译链并解压。我这里下载的版本为gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu。

2.安装CMake

Opencv以及许多库需要通过CMake创建MakeFile,直接sudo apt-get install cmake。

3.下载eigen源码

在home目录创建文件夹compile_eigen3_2,一个子文件夹arm_eigen,arm_eigen内再创建build和install两个子文件夹。eigen3.2.10源码下载并解压至compile_eigen3_2文件夹内。

4.配置工具链

在任意位置打开终端,输入cmake-gui。设置source code路径为/home/andrew/compile_eigen3_2/eigen-3.2.10,build路径为/home/andrew/compile_eigen3_2/arm_eigen3/build。点击configure,
交叉编译eigen3.2.10至ARM架构_第1张图片选择第四项后点击next,OS随意命名即可,C、C++编译器、Target Root一定要选择正确:
交叉编译eigen3.2.10至ARM架构_第2张图片点击finish。search位置输入CMAKE_INSTALL_PREFIX,修改编译后的路径为/home/andrew/compile_eigen3_2/arm_eigen3/install,这里默认为/usr/local,不修改会影响主机上原有库的使用。再次点击configure并generate,完毕后关闭cmake-gui。

5.build目录下make

进入build目录下打开终端,输入make开始编译,应该不会报错。

6.sudo make install

直接输入sudo make install命令安装,应该不会报错。

7.上板测试

1.在install目录下编写一个test.cpp:

#include
#include
using namespace Eigen;
int main()
{
	Matrix2d a;
	a<<1,2,
	3,4;
	MatrixXd b(2,2);
	b<<2,3,
	1,4;
	std::cout<<"a+b=\n"<<a+b<<std::endl;
	return 0;
}

2.还是在install目录下,交叉编译该程序:
/home/andrew/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ eigentest.cpp -I./include/eigen3 -o test.out
得到test.out
3.将intall压缩为tar格式。
4.在arm_eigen3目录下,将install压缩包传到开发版。scp install.tar [email protected]:/home/admin/armeigen_test
5.进入开发板系统。ssh [email protected]
6.解压install,由于eigen库只有头文件,不需要export LD_LIBRARY_PATH。
7.执行./test.out,成功运行。
在这里插入图片描述

你可能感兴趣的:(交叉编译)