全志D1-H,官方SDK Tina2.0 移植 ffmpeg (交叉编译成功,运行时出问题)
-
移植ffmpeg
CompilationGuide/Generic – FFmpeg
FFmpeg-4.3.2 嵌入式Linux交叉编译_qq_29994663的博客-CSDN博客_交叉编译ffmpeg下载源码
wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 tar xvf ffmpeg-snapshot.tar.bz2 cd ffmpeg
环境配置
在
ffmpeg
源码根目录创建自动配置文件autogen.sh
export PATH=$PATH:/home/leesum/tina-d1-h/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/ ./configure \ --prefix="./riscv-ffmpeg"\ --enable-shared \ --enable-cross-compile \ --cross-prefix=riscv64-unknown-linux-gnu- \ --target-os=linux \ --arch=riscv \ --enable-gpl \ --enable-libx264 \ --enable-libfdk-aac \ --enable-nonfree \ --extra-cflags="-I/home/leesum/tina-d1-h/out/d1-h-nezha/staging_dir/target/usr/include/ -I/home/leesum/tina-d1-h/out/d1-h-nezha/staging_dir/target/usr/include/allwinner/ -I/home/leesum/tina-d1-h/out/d1-h-nezha/staging_dir/target/usr/include/allwinner/include/" \ --extra-ldflags="-L/home/leesum/tina-d1-h/out/d1-h-nezha/staging_dir/target/usr/lib/" \ --extra-libs=-ldl
激活环境
chmod +x autogen.sh source ./autogen.sh
没有报错就是配置成功
交叉编译ffmpeg
make -j2
大约十分钟会编译成功,按照如上配置,我一次编译成功没有报错
make install
进入设定的
--prefix
目录,cd riscv-ffmpeg cd bin file ffmpeg
查看可执行文件类型,确实为
riscv64
可执行文件➜ bin file ffmpeg ffmpeg: ELF 64-bit LSB executable, UCB RISC-V, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64xthead-lp64d.so.1, for GNU/Linu ➜ bin
将
riscv-ffmpeg
目录下的文件打包发送至开发板找不到动态库
ffmpeg环境变量设置和安装后不能加载共享库的错误解决_Jensen Lee的博客-程序员宅基地 - 程序员宅基地 (cxyzjd.com)
报错:报错找不到动态库
./ffmpeg: error while loading shared libraries: libx264.so: cannot open shared object file: No such file or directory
根据报错信息可知缺少
libx264.so
这个动态库,进入TinaSDK
根目录,搜索libx264.so
将这个动态库复制到开发板中。find -name "libx264.so"
进入目录ls
file
命令查看文件属性libx264.so.157: ELF 64-bit LSB shared object, UCB RISC-V, version 1 (SYSV), dynamically linked, with debug_info, not stripped
libx264.so
是libx264.so.157
的软连接,需要将这两个文件复制到开发板中的lib
目录,或者ffmpeg
根目录中的lib
目录。
在这里我将这两个文件复制到了riscv-ffmpeg/lib
目录下。
添加动态链接库的位置和环境变量的位置export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/riscv-ffmpeg/lib export PATH=$PATH:/root/riscv-ffmpeg/bin
运行
ffmpeg
显示下图则移植成功。
出现问题
虽然
ffmpeg
有显示,但是运行命令时会出现Segmentation fault
错误,不知道如何解决,可能是配置的问题。 -
-
大佬真6,赞一个
-
@ccl_whc 在 全志D1-H,官方SDK Tina2.0 移植 ffmpeg (交叉编译成功,运行时出问题) 中说:
大佬真6,赞一个
2.0的tina没有ffmpeg把 -
解压丢到 package/mutimedia
-
@yuzukitsuru 最新的tina里根本没有ffmpeg目录,怎么办呢?
-
@zjw123
曲线救国,① 用buildroot设置tina同一个编译器,把生成的文件拷贝过去.
② 或者在pack 命令前把buildroot生成的rootfs image 复制到 tina的rootfs.fex指向的img文件
-
@zjw123 一样解压丢到package/mutimedia
-
@yuzukitsuru
我在这个目录下执行 mm 后,在/tina-D1-H/out/d1-h-nezha/compile_dir/target/ffmpeg-4.3.1/ipkg-install/
下 生成了 可执行文件和库。
但是我怎么把这些文件打包到 .img 中的文件系统里呢?没有这个命令啊。 -
@yuzukitsuru
我在这个目录下执行 mm 后,生成了 可执行文件和库。
但是我怎么把这些文件打包到 .img 中的文件系统里呢?没有这个命令啊 -
@zjw123 m menuconfig里选中ffmpeg,mp编译打包
-
@yuzukitsuru 前辈,修改这里面的Makefile,可以加快ffmepg的编译速度,我用了你提供的压缩包,然后编译,感觉只有单线程编译,好慢。
但是还不太清楚需要修改哪里可以加快编译速度 -
@gsd_zcm 找到compile里,加一个 -j
-
@whycanservice
我这样修改后,可以加快编译速度了。 -
@whycanservice 前辈,你好,我用了你提供的ffmpeg的包然后去编译,出现这样的错误,
cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/sshd': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/addpart': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/delpart': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/partx': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/resize2fs': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/tcpdump': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/wpa_cli': No space left on device cp: error writing '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/sbin/wpad': No space left on device cp: cannot create directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/share': No space left on device cp: cannot create directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/res': No space left on device cp: cannot create directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/include': No space left on device cp: cannot create directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/usr/libexec': No space left on device cp: cannot create directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root/www': No space left on device rm -f /home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/rootfs.img rm -f /home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/usr.img dd if=/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/compile_dir/target/linux-d1-h-nezha/root.ext4 of=/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha/rootfs.img bs=128k conv=sync 512+0 records in 512+0 records out 67108864 bytes (67 MB, 64 MiB) copied, 0.0423801 s, 1.6 GB/s ( cd /home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha ; find -maxdepth 1 -type f \! -name 'md5sums' -printf "%P\n" | sort | xargs md5sum --binary > md5sums ) ( cd /home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/out/d1-h-nezha ; find -maxdepth 1 -type f \! -name 'md5sums' -printf "%P\n" | sort | xargs openssl dgst -sha256 > sha256sums ) make[5]: Leaving directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/target/allwinner/generic/image' make[4]: Leaving directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/target/allwinner/d1-h-nezha' make[3]: Leaving directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux/target/allwinner' make[2]: Leaving directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux' export MAKEFLAGS= ;make -w -r package/index make[2]: Entering directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux' Generating package index... Signing key has not been configured make[2]: Leaving directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux' make[1]: Lea![21f0b82a-75a6-4be7-94ff-78d57beaae7e-image.png](/assets/uploads/files/1668569215929-21f0b82a-75a6-4be7-94ff-78d57beaae7e-image.png) ving directory '/home/zcm/linux/SDK/allwinner/D1/PET_D1-H_P01_Linux'
我百度了下。说是虚拟机空间不够,但我的虚拟机下新装的,下面是我的硬盘空间使用情况。目前不知道问题出在哪里
-
@gsd_zcm 这个是d1的空间不够,在menuconfig的base system里配置下
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号