arm-linux-gcc camke,Window平台基于CMake与linaro交叉编译arm程序

简介

本文介绍了在windows系统平台使用linaro交叉编译工具链,基于cmake和MinGW的make构建方式编译arm平台目标程序。

环境准备

交叉编译之前需要准备好以下环境和文件,cmake与MinGW安装网上搜索下载安装即可。linaro编译工具链根据自己机器的目标平台到linaro官网选择对应的版本下载即可,本文基于gcc-linaro-7.5.0-2019版本实验,也适用于其他版本。cmake

MinGW

linaro

步骤

编写工具链toolchain.cmake文件

在工具链根目录新建cmake目录,里面存放该工具链的toolchain.cmake文件。toolchain.cmake文件内容如下。# 设置目标系统、处理器架构

set(CMAKE_SYSTEM_NAME Linux)

set(CMAKE_SYSTEM_PROCESSOR arm)

# 设置工具链目录

set(TOOL_CHAIN_DIR ${CMAKE_CURRENT_LIST_DIR}/../)

set(TOOL_CHAIN_INCLUDE ${TOOL_CHAIN_DIR}/arm-linux-gnueabihf/include ${TOOL_CHAIN_DIR}/arm-linux-gnueabihf/libc/usr/include)

set(TOOL_CHAIN_LIB ${TOOL_CHAIN_DIR}/arm-linux-gnueabihf/lib ${TOOL_CHAIN_DIR}/arm-linux-gnueabihf/libc/usr/lib)

# 设置编译器位置

set(CMAKE_C_COMPILER "${TOOL_CHAIN_DIR}/bin/arm-linux-gnueabihf-gcc.exe")

set(CMAKE_CXX_COMPILER "${TOOL_CHAIN_DIR}/bin/arm-linux-gnueabihf-g++.exe")

# 设置cmake查找主路径

set(CMAKE_FIND_ROOT_PATH ${TOOL_CHAIN_DIR}/arm-linux-gnueabihf)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# 只在指定目录下查找库文件

set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)

# 只在指定目录下查找头文件

set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

# 只在指定目录下查找依赖包

set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

# 包含工具链文件

include_directories(

${TOOL_CHAIN_DIR}/arm-linux-gnueabihf/include

${TOOL_CHAIN_DIR}/arm-linux-gnueabihf/libc/usr/include)

# 设置CMAKE_INCLUDE_PATH

set(CMAKE_INCLUDE_PATH ${TOOL_CHAIN_INCLUDE})

# 设置CMAKE_LIBRARY_PATH

set(CMAKE_LIBRARY_PATH ${TOOL_CHAIN_LIB})

toolchain.cmake文件内容主要描述了交叉编译工具链相关程序(如编译器、汇编器链接器)、包含头文件与库文件的存放路径,以便CMake构建Makefiles文件时正确找到并使用他。

测试

测试程序可执行文件int main(int argc, char* argv[])

{

return 0;

}动态库文件#ifndef ADD_H_

#define ADD_H_

int add(const int& a, const int& b);

#endif //!ADD_H_#include "add.h"

int add(const int& a, const int& b)

{

return a + b;

}

编写测试程序CMakeLists.txtcmake_minimum_required(VERSION 3.14)

# 设置工具链cmake文件

set(CMAKE_TOOLCHAIN_FILE ${CMAKE_SOURCE_DIR}/gcc-linaro-7.5.0-2019.12-i686-mingw32_arm-linux-gnueabihf/cmake/toolchain.cmake)

project(cross_compile_demo)

# 设置make程序位置

set(CMAKE_MAKE_PROGRAM = "C:/Program Files/mingw-w64/x86_64-8.1.0-posix-seh-rt_v6-rev0/mingw64/bin/mingw32-make.exe")

add_executable(${PROJECT_NAME} main.cpp)

add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/add)cmake_minimum_required(VERSION 3.14)

project(add)

add_library(${PROJECT_NAME} SHARED add.h add.cpp)

编译

构建编译可以选择基于cmake命令行或GUI的方式,以下两种方法任意二选一即可。命令行构建编译

cd到项目根目录,新建build目录存放构建、编译文件。cd youproject_dir

mkdir build

cd build

cmake -G "MinGW Makefiles" ..

mingw32-make.exeGUI构建编译打开cmake GUI程序

选择项目根目录,以及build目录

点击configurate,配置。选择MinGW Makefiles与Specify toolchain files for cross-compling

选择toolchain.camke文件

点击generate

打开控制台cd到build目录执行make编译mingw32-make.exe

执行编译,结束后生成目标文件。Scanning dependencies of target cross_compile_demo

[ 25%] Building CXX object CMakeFiles/cross_compile_demo.dir/main.cpp.o

[ 50%] Linking CXX executable cross_compile_demo

[ 50%] Built target cross_compile_demo

[100%] Built target addadd/ CMakeCache.txt cross_compile_demo

cmake_install.cmake CMakeFiles/ Makefilecmake_install.cmake CMakeFiles/ libadd.so Makefile

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值