window wsl 环境下编译openharmony,HarmonyOS 三方库 FFmpeg

1.wsl 创建

C:\Users\Administrator>wsl --list --online

以下是可安装的有效分发的列表。

使默认分发用 "*" 表示。

使用 'wsl --install -d <Distro>' 安装。

NAME FRIENDLY NAME

  • Ubuntu Ubuntu

Debian Debian GNU/Linux

kali-linux Kali Linux Rolling

Ubuntu-18.04 Ubuntu 18.04 LTS

Ubuntu-20.04 Ubuntu 20.04 LTS

Ubuntu-22.04 Ubuntu 22.04 LTS

Ubuntu-24.04 Ubuntu 24.04 LTS

OracleLinux_7_9 Oracle Linux 7.9

OracleLinux_8_7 Oracle Linux 8.7

OracleLinux_9_1 Oracle Linux 9.1

openSUSE-Leap-15.6 openSUSE Leap 15.6

SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6

openSUSE-Tumbleweed openSUSE Tumbleweed

C:\Users\Administrator>wsl --install -d Ubuntu-24.04

正在安装: 虚拟机平台

已安装 虚拟机平台。

正在安装: 适用于 Linux 的 Windows 子系统

已安装 适用于 Linux 的 Windows 子系统。

正在安装: 适用于 Linux 的 Windows 子系统

已安装 适用于 Linux 的 Windows 子系统。

正在安装: Ubuntu 24.04 LTS

已安装 Ubuntu 24.04 LTS。

请求的操作成功。直到重新启动系统前更改将不会生效。

重启

C:\Users\Administrator>wsl -d Ubuntu-24.04

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.

zzj@DESKTOP-IMD54IU:/mnt/c/Users/Administrator$exit

(默认安装到C盘,以下操作是将c盘镜像转移到E盘)

C:\Users\Administrator>wsl --export Ubuntu-24.04 E:\wsl\Ubuntu-24.04.tar

C:\Users\Administrator>wsl --unregister Ubuntu-24.04

正在注销。

操作成功完成。

C:\Users\Administrator>wsl --import Ubuntu-24.04 E:\wsl\Ubuntu-24.04 E:\wsl\Ubuntu-24.04.tar

操作成功完成。

C:\Users\Administrator>wsl -l -v

NAME STATE VERSION

* Ubuntu-24.04 Stopped 2

C:\Users\Administrator>wsl --set-default Ubuntu-24.04

操作成功完成。

C:\Users\Administrator>wsl -d Ubuntu-24.04

root@DESKTOP-IMD54IU:/mnt/c/Users/Administrator# su zzj

To run a command as administrator (user "root"), use "sudo <command>".

See "man sudo_root" for details.

zzj@DESKTOP-IMD54IU:/mnt/c/Users/Administrator$ cd /home/zzj/

zzj@DESKTOP-IMD54IU:~$ pwd

/home/zzj

2.下载 ohos-sdk-full

下载地址 https://ci.openharmony.cn/workbench/cicd/dailybuild/dailyList

包名 version-Master_Version-OpenHarmony_5.0.0.39-20240825_020234-ohos-sdk-full.tar.gz

时间选 2024-08-15 2024-09-01

3.安装必须包

zzj@DESKTOP-9H0R2NQ:~$sudo apt update

zzj@DESKTOP-9H0R2NQ:~$sudo apt upgrade

zzj@DESKTOP-9H0R2NQ:~$sudo apt install autoconf

zzj@DESKTOP-9H0R2NQ:~$sudo apt install nasm

zzj@DESKTOP-9H0R2NQ:~$sudo apt install cmake

zzj@DESKTOP-9H0R2NQ:~$sudo apt install gcc

zzj@DESKTOP-9H0R2NQ:~$sudo apt install g++

zzj@DESKTOP-9H0R2NQ:~$sudo apt install pkg-config

zzj@DESKTOP-9H0R2NQ:~$sudo apt install ninja-build

zzj@DESKTOP-9H0R2NQ:~$sudo apt install zip

zzj@DESKTOP-9H0R2NQ:~$sudo apt install librtmp-dev

4.拷贝full sdk 到 ubuntu

zzj@DESKTOP-9H0R2NQ:~$mkdir third_party

zzj@DESKTOP-9H0R2NQ:~$cd third_party

zzj@DESKTOP-9H0R2NQ:~/third_party$ ls

version-Master_Version-OpenHarmony_5.0.0.39-20240825_020234-ohos-sdk-full.tar.gz

zzj@DESKTOP-9H0R2NQ:~/third_party$ tar vxf version-Master_Version-OpenHarmony_5.0.0.39-20240825_020234-ohos-sdk-full.tar.gz

zzj@DESKTOP-9H0R2NQ:~/third_party$ ls -al

total 2609288

drwxr-xr-x 5 zzj zzj 4096 Jul 7 10:23 .

drwxr-x--- 5 zzj zzj 4096 Jul 7 09:58 ..

drwxr-xr-x 3 zzj zzj 4096 Jul 7 10:24 linux

-rw-r--r-- 1 zzj zzj 2671780565 Jul 7 10:15 version-Master_Version-OpenHarmony_5.0.0.39-20240825_020234-ohos-sdk-full.tar.gz

drwxr-xr-x 2 zzj zzj 4096 Aug 25 2024 windows

(只保留linux目录即可)

zzj@DESKTOP-9H0R2NQ:~/third_party$ cd linux/

(只保留native-linux-x64-5.0.0.40-Beta5.zip目录即可)

zzj@DESKTOP-9H0R2NQ:~/third_party$ unzip native-linux-x64-5.0.0.40-Beta5.zip

zzj@DESKTOP-9H0R2NQ:~/third_party/linux$ ls -al

total 1230120

drwxr-xr-x 3 zzj zzj 4096 Jul 7 10:24 .

drwxr-xr-x 5 zzj zzj 4096 Jul 7 10:23 ..

drwxr-xr-x 7 zzj zzj 4096 Jul 7 10:25 native

-rw-r--r-- 1 zzj zzj 910875172 Aug 25 2024 native-linux-x64-5.0.0.40-Beta5.zip

zzj@DESKTOP-9H0R2NQ:~/third_party/linux$ pwd

/home/zzj/third_party/linux

zzj@DESKTOP-9H0R2NQ:~/third_party/linux$ cd ..

5.下载编译工具

zzj@DESKTOP-9H0R2NQ:~/third_party$ git clone https://gitcode.com/openharmony-sig/tpc_c_cplusplus.git

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus$ git checkout 033ea77a98b4dd2dd2b72804a54f8428cbe976c5

(切换到5月版本,新版本工具有问题)

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus$ cd /home/zzj/third_party/tpc_c_cplusplus/lycium/Buildtools/

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/Buildtools$ sha512sum -c SHA512SUM

toolchain.tar.gz: OK

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/Buildtools$ export OHOS_SDK=/home/zzj/third_party/linux

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/Buildtools$tar -zxvf toolchain.tar.gz

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/Buildtoolscp toolchain/\* {OHOS_SDK}/native/llvm/bin

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/Buildtools$ cd /home/zzj/third_party/tpc_c_cplusplus/lycium/

6.修改 FFmpeg的HPKBUILD编译配置项

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium$vim /home/zzj/third_party/tpc_c_cplusplus/thirdparty/FFmpeg/HPKBUILD

depends=("rtmpdump" "openssl_1_0_2u") 改为 depends=()

--enable-librtmp 改为 --disable-librtmp

--enable-openssl 改为 --disable-openssl

(我本身对rtmp openssl 没需求,如果不改,这两个依赖包编译有问题,修改嫌麻烦,直接让他们滚蛋,如需修改好的FFmpeg/HPKBUILD文件可以联系我)

7.开始编译

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium$ ./build.sh FFmpeg

Build OS linux

OHOS_SDK=/home/zzj/third_party/linux

CLANG_VERSION=15.0.4

创建 /home/zzj/third_party/tpc_c_cplusplus/lycium/usr 目录

Start building FFmpeg n6.0!

Downloading FFmpeg-n6.0.tar.gz

FFmpeg-n6.0.tar.gz: OK

Compileing OpenHarmony armeabi-v7a FFmpeg n6.0 libs...

patching file tests/md5.sh

The test must be on an OpenHarmony device!

Compileing OpenHarmony arm64-v8a FFmpeg n6.0 libs...

patching file tests/md5.sh

The test must be on an OpenHarmony device!

Build FFmpeg n6.0 end!

ALL JOBS DONE!!!

编译后include 和 lib位置(include 与 lib 同级,armeabi-v7a 下的为 32位,arm64-v8a下的为64为看自己板子定)

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/usr/FFmpeg$ ls armeabi-v7a/lib/

libavcodec.a libavdevice.so.60 libavformat.a libavutil.so.58 libswscale.a

libavcodec.so libavdevice.so.60.1.100 libavformat.so libavutil.so.58.2.100 libswscale.so

libavcodec.so.60 libavfilter.a libavformat.so.60 libswresample.a libswscale.so.7

libavcodec.so.60.3.100 libavfilter.so libavformat.so.60.3.100 libswresample.so libswscale.so.7.1.100

libavdevice.a libavfilter.so.9 libavutil.a libswresample.so.4 pkgconfig

libavdevice.so libavfilter.so.9.3.100 libavutil.so libswresample.so.4.10.100

zzj@DESKTOP-9H0R2NQ:~/third_party/tpc_c_cplusplus/lycium/usr/FFmpeg$ ls arm64-v8a/lib/

libavcodec.a libavdevice.so.60 libavformat.a libavutil.so.58 libswscale.a

libavcodec.so libavdevice.so.60.1.100 libavformat.so libavutil.so.58.2.100 libswscale.so

libavcodec.so.60 libavfilter.a libavformat.so.60 libswresample.a libswscale.so.7

libavcodec.so.60.3.100 libavfilter.so libavformat.so.60.3.100 libswresample.so libswscale.so.7.1.100

libavdevice.a libavfilter.so.9 libavutil.a libswresample.so.4 pkgconfig

libavdevice.so libavfilter.so.9.3.100 libavutil.so libswresample.so.4.10.100

相关推荐
ONEDAY19 小时前
HarmonyOS 多 Product 构建实践:一套代码生成多个产物
harmonyos
TT_Close21 小时前
别劝退了!5秒搞定 Flutter 鸿蒙 FVM 起跑线
flutter·harmonyos·visual studio code
TrisighT1 天前
ArkTS 列表滚动时为什么会闪现旧数据?我扒了 LazyForEach 的复用逻辑
harmonyos·arkts·arkui
MonkeyKing1 天前
鸿蒙ArkTS深度剖析:ArkTS与TS/JS核心差异、静态强类型实战优势
typescript·harmonyos
TrisighT1 天前
Electron鸿蒙PC上写日志文件,我被权限和路径坑了两次
electron·harmonyos
TrisighT2 天前
一个下午搞定 ArkTS 折叠面板?结果我从两点写到晚上九点
harmonyos·arkts·arkui
Mahut4 天前
我用 Electron + FFmpeg 做了一个本地视频处理工作站 ClipForge
前端·ffmpeg·electron
花椒技术5 天前
HJPusher / HJPlayer SDK 实践:我们为什么把直播推播链路拆成一套可复用能力
设计模式·harmonyos·直播
一维Ace5 天前
HarmonyOS ArkTS 按钮组件全解:Button、Toggle 状态交互实战
harmonyos
anyup6 天前
来简单聊聊鸿蒙开发,万元奖金的事~
前端·华为·harmonyos