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)
## (2)创建主CMakeLists.txt文件
点击查看代码
# 指定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
)
## (3)项目结构示例创建以下目录结构:
点击查看代码
project/
├── CMakeLists.txt
├── imx6_toolchain.cmake
├── include/
│   └── example.h
└── src/
    └── main.cpp
## (4)使用CMake生成构建文件打开命令提示符并执行:
点击查看代码
mkdir build
cd build
cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=../imx6_toolchain.cmake ..
## (5)编译项目在build目录中执行: `make`
posted @ 2025-03-30 20:03  xenmebol  阅读(2343)  评论(0)    收藏  举报