linux cmake交叉编译

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
【linux cmake交叉编译】添加依赖库
测试添加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