linux cmake交叉编译
linux cmake交叉编译
linux cmake交叉编译,使用环境:、cmake、gcc-arm-10.2-2020.11---none-linux-gnu。
下载
在ARM官网上下载交叉编译工具连,有几种不同的,名字区别如下:
区别无外乎几个:大端 or 小端、ARMv7 or ARMv8、32位 or 64位、裸机 or 嵌入式Linux
arm-none-eabi :将会带来全新的写作体验;arm-linux-none- :将会带来全新的写作体验;-none-linux-gnu: 测试
用一个hello程序来测试下环境:
hello.c:
#include "stdio.h"int main()
{printf("Hello\n");return 0;
}
.txt:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_SYSTEM_PROCESSOR arm)
SET(CMAKE_SYSTEM_NAME Linux)
set(USER_PATH "/home/work/tools/aarch64-linux-gnu")
SET(CMAKE_C_COMPILER ${USER_PATH}/bin/aarch64-none-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER ${USER_PATH}/bin/aarch64-none-linux-gnu-g++)project(hello)
add_executable(hello hello.c)
set(OR arm)
设置目标环境的处理器类型
SET( Linux)
设置目标环境操作系统
set( “/home/work/tools/-linux-gnu”)
存放下载的交叉编译工具链存放路径
SET( ${}/bin/-none-linux-gnu-gcc)
SET( ${}/bin/-none-linux-gnu-g++)
设置编译器
编译完成后放在到目标机上运行OK
添加依赖库
测试添加glut和GL库的交叉编译,添加一个源代码用glut绘制窗口,用GL进行清屏。cmake正常,make时报错:
/home/work/develop/btx_combench/aarch64-compile/bin/../lib/gcc/aarch64-none-linux-gnu/10.2.1/../../../../aarch64-none-linux-gnu/bin/ld: warning: libxcb.so.1, needed by /home/work/develop/btx_combench/aarch64-compile/lib/libX11.so, not found (try using -rpath or -rpath-link)
/home/work/develop/btx_combench/aarch64-compile/bin/../lib/gcc/aarch64-none-linux-gnu/10.2.1/../../../../aarch64-none-linux-gnu/bin/ld: /home/work/develop/btx_combench/aarch64-compile/lib/libXrandr.so: undefined reference to `XMissingExtension'
解决方法:在cmake中添加对应的库X11。这里和本地编译不同,本地编译不需要指定依赖库的依赖库。
需要注意的问题
下载的gcc编译器版本需要和目标机版本一致,否则会报如下错误:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found