linux cmake交叉编译,使用环境:ubuntu、cmake、gcc-arm-10.2-2020.11-x86_64-aarch64-none-linux-gnu。
www.linaro
在ARM官网上下载交叉编译工具连,有几种不同的,名字区别如下:
区别无外乎几个:大端 or 小端、ARMv7 or ARMv8、32位 or 64位、裸机 or 嵌入式Linux
=distribute.-l&depth_1-utm_source=distribute.-l
用一个hello程序来测试下环境:
hello.c:
#include "stdio.h"int main()
{printf("Hellon");return 0;
}
<:
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(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++)
设置编译器
编译完成后放在到目标机上运行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中link_libraries添加对应的库X11。这里和本地编译不同,本地编译不需要指定依赖库的依赖库。
下载的gcc编译器版本需要和目标机版本一致,否则会报如下错误:
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found
本文发布于:2024-02-04 07:09:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170701811753471.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |