win10下CMAKE交叉编译ARM-LINUX

本文介绍如何在Windows 10环境下使用CMake进行ARM64-Linux的交叉编译,包括环境配置、CMakeLists.txt编写、生成Unix Makefiles及make过程,最终实现hello_world程序的编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WIN10下CMAKE交叉编译ARM64-LINUX

平台准备(接上一篇文章)

win10
cmake
arm-linux-gcc(aarch64-linux-gnu-gcc-7.3.1.exe)
arm-linux-g++(aarch64-linux-gnu-g++.exe)
make
zcu106开发板
vscode编辑器

开始

首先设置好win10下make、cmake、arm-linux-gcc/g++等环境,在shell中查看
在这里插入图片描述

这样环境编装好了,接下来编写CMakeLists.txt
如下:

cmake_minimum_required(VERSION 2.8)

#set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc-7.3.1.exe")
set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++.exe")

project(hello_world)

include_directories(inc INC_LIST)

aux_source_directory(src SRC_LIST)

add_executable(hello_world main.c ${SRC_LIST})

这里编写可以参考https://www.cnblogs.com/Trony/p/10952507.html
上面设置了交叉编译器,环境、处理器平台、输出路径等
然后便可以cmake了,这里需要注意,在win10平台下默认生成的是visual stduio2014的版本,需要指定生成标准unix makefile,这里代码如下:

PS C:\Users\Joker\Desktop\graduate\code\pro> cmake -G "Unix Makefiles" .
-- The C compiler identification is GNU 7.3.1
-- The CXX compiler identification is GNU 7.3.1
-- Check for working C compiler: D:/Software/vivado/SDK/2018.3/gnu/aarch64/nt/aarch64-linux/bin/aarch64-linux-gnu-gcc-7.3.1.exe
-- Check for working C compiler: D:/Software/vivado/SDK/2018.3/gnu/aarch64/nt/aarch64-linux/bin/aar-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: D:/Software/vivado/SDK/2018.3/gnu/aarch64/nt/aarch64-linux/bin/a-- Check for working CXX compiler: D:/Software/vivado/SDK/2018.3/gnu/aarch64/nt/aarch64-linux/bin/aarch64-linux-gnu-g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Donce Jiang/Desktop/graduate/code/pro

然后make

PS C:\Users\Joker\Desktop\graduate\code\pro> make
Scanning dependencies of target hello_world
[ 33%] Building C object CMakeFiles/hello_world.dir/main.c.o
[ 66%] Linking C executable /bin/hello_world
[100%] Built target hello_world

最后得到hello_world执行代码,这里的hello_world代码如下,打印环境变量
在这里插入图片描述
在开发板上挂载sd卡,并执行hello_world如下:
在这里插入图片描述
大功告成。

在WSL(Ubuntu)中编译ffmpeg for Android的步骤如下: 1. 安装必要的依赖项 在Ubuntu中打开终端,执行以下命令安装必要的依赖项: ``` sudo apt-get update sudo apt-get install build-essential git autoconf automake libtool pkg-config zlib1g-dev cmake mercurial texinfo ``` 2. 下载NDK 下载并解压Android NDK,可以从官网下载最新版:https://developer.android.com/ndk/downloads/ 假设你将NDK解压到了 /opt/android-ndk-r21d 目录下。 3. 安装交叉编译工具链 执行以下命令安装交叉编译工具链: ``` cd /opt/android-ndk-r21d/build/tools/ ./make_standalone_toolchain.py --arch arm64 --api 21 --stl=libc++ --install-dir /opt/android-toolchain-arm64 ``` 这里选择了 arm64 架构,API级别为 21,STL库为 libc++,安装目录为 /opt/android-toolchain-arm64。 4. 下载ffmpeg源码 执行以下命令下载ffmpeg源码: ``` git clone https://git.ffmpeg.org/ffmpeg.git cd ffmpeg ``` 5. 配置交叉编译环境 执行以下命令配置交叉编译环境: ``` export PATH=$PATH:/opt/android-toolchain-arm64/bin export CC=aarch64-linux-android21-clang export CXX=aarch64-linux-android21-clang++ export AR=aarch64-linux-android-ar export AS=aarch64-linux-android-as export LD=aarch64-linux-android-ld export RANLIB=aarch64-linux-android-ranlib export STRIP=aarch64-linux-android-strip ``` 6. 配置ffmpeg编译选项 执行以下命令配置ffmpeg编译选项: ``` ./configure \ --target-os=android \ --prefix=/opt/ffmpeg-android/arm64-v8a \ --enable-cross-compile \ --enable-pic \ --enable-jni \ --enable-mediacodec \ --enable-decoder=h264_mediacodec \ --enable-decoder=hevc_mediacodec \ --disable-static \ --enable-shared \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-postproc \ --disable-avdevice \ --disable-symver \ --disable-debug \ --disable-network \ --disable-everything \ --arch=aarch64 \ --cpu=armv8-a \ --cc=aarch64-linux-android21-clang \ --cxx=aarch64-linux-android21-clang++ \ --cross-prefix=aarch64-linux-android- \ --sysroot=/opt/android-toolchain-arm64/sysroot ``` 这里开启了 mediacodec 硬解码支持,只支持 H.264 和 HEVC 硬解码,其他配置选项根据需要自行调整。 7. 编译ffmpeg 执行以下命令编译ffmpeg: ``` make -j4 sudo make install ``` 这里使用了 4 核进行编译,可以根据实际情况进行调整。 8. 完成 编译完成后,ffmpeg库文件将会被安装到 /opt/ffmpeg-android/arm64-v8a 目录下。可以将这个目录打包成一个.aar库文件,用于Android Studio项目中的使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值