windows环境下交叉编译arm架构Linux
1. 准备
1)交叉编译链接工具(根据需求下载目标平台的编译链接工具)
ARM GCC下载链接:
https://developer.arm.com/Tools and Software/GNU Toolchain
2)Cmake,用来自动化生成makefile的工具
3)msys2, 提供一个类linux环境的终端平台,也用来作环境隔离
4)mingw,做windows上的编译器,搭配vscode的c插件可以实时纠正一些语法错误
PS:安装以上工具时记得将其bin文件路径添加至系统环境变量,与msys2的环境变量。
要将Windows系统上已安装的CMake添加到MSYS2的UCRT64环境中,可以通过以下步骤操作:
(1)打开或创建MSYS2配置文件:nano ~/.bashrc
(2)在文件末尾添加以下行:# 添加Windows系统中的CMake到PATH export PATH="/c/Program Files/CMake/bin":$PATH
(3)保存文件(Ctrl+O,然后Enter,再按Ctrl+X退出)
重启MSYS2终端或运行以下命令使更改生效:source ~/.bashrc
参考文章1
参考文章2
2. 正式开始交叉编译
(1)创建交叉编译工具链文件创建imx6_toolchain.cmake文件:
点击查看代码
# 设置目标系统名称
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
# 指定工具链路径,请替换为您的实际路径
set(TOOLCHAIN_PATH "C:/arm-gcc/bin")
# 设置C和C++编译器
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/arm-none-eabi-gcc.exe)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/arm-none-eabi-g++.exe)
# 搜索程序时只在工具链目录搜索
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# 只在目标环境中搜索库和头文件
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
# 为i.MX6U设置编译标志
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard" CACHE STRING "" FORCE)
点击查看代码
# 指定CMake最低版本
cmake_minimum_required(VERSION 3.10)
# 项目名称和语言
project(IMX6U_Project C CXX)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 添加源文件目录
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
# 收集所有源文件
file(GLOB SOURCES "src/*.c" "src/*.cpp")
# 创建可执行文件
add_executable(my_app ${SOURCES})
# 链接必要的库
target_link_libraries(my_app
# 添加您需要的库
)
# 安装规则
install(TARGETS my_app
RUNTIME DESTINATION bin
)
点击查看代码
project/
├── CMakeLists.txt
├── imx6_toolchain.cmake
├── include/
│ └── example.h
└── src/
└── main.cpp
点击查看代码
mkdir build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=../imx6_toolchain.cmake ..

浙公网安备 33010602011771号