姓名:范雪元
學(xué)號(hào):19020100086
學(xué)院:電子工程學(xué)院
以下文章來源:https://blog.csdn.net/zh8706/article/details/107859074
【嵌牛導(dǎo)讀】:海思Hi3559AV100交叉編譯ffmpeg
【嵌牛鼻子】:boost
【嵌牛提問】:如何通過海思Hi3559AV100交叉編譯ffmpeg?
【嵌牛正文】:
ffmepg版本:ffmpeg-4.2.2
PC操作系統(tǒng):ubuntu 16.04
1. 編寫build文件
在ffmpeg-4.2.2目錄下創(chuàng)建文件build.sh并保存。
--prefix指定了make install后生成的編譯文件的目錄
注意最后一行--disable-stripping吓笙,可避免編譯過程報(bào)的strip錯(cuò)誤
./configure \
? ? ? ? --prefix="$HOME/work/AIVS/ffmpeg"\
--enable-shared \
--enable-cross-compile \
--target-os=linux \
--arch=aarch64 \
--cc=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-gcc \
--cxx=/opt/hisi-linux/x86-arm/aarch64-himix100-linux/bin/aarch64-himix100-linux-g++ \
--enable-gpl \
--extra-libs=-ldl \
--extra-cflags="-fPIC" \
--extra-ldflags=-Wl,-Bsymbolic \
--extra-libs="-lpthread -lm"\
--disable-stripping
然后在當(dāng)前目錄下執(zhí)行./build.sh贮缕,開始build漩蟆,如果權(quán)限不夠罚斗,需要執(zhí)行sudo ./build.sh
2. 編譯
make j4
maks install
install完后在/home/AIVS/ffmpeg目錄下生成編譯文件跺株,lib目錄下為靜態(tài)庫與靜態(tài)庫
3. 使用
設(shè)置庫文件及頭文件路徑
INC_FLAGS += -I$(cdir)/../ffmpeg/include/
LDFLAGS? += -L$(cdir)/../ffmpeg/lib
添加使用的庫文件:
LDLIBS += -lavfilter -lavformat -lavcodec -lavutil -lswresample -lswscale -lpostproc
注意以上ffmpeg庫文件直接是彼此依賴的郑什,而且有順序規(guī)定的府喳,推薦的是以上庫文件順序
將lib目錄下的so庫拷貝到執(zhí)行文件的相關(guān)目錄下,并使用以下設(shè)置好so庫的路徑
export LD_LIBRARY_PATH=XXX
題外話:
如果lib目錄下只有靜態(tài)庫.a文件蘑拯,沒有動(dòng)態(tài)庫.so文件钝满,在生成可執(zhí)行文件的鏈接階段會(huì)將靜態(tài)庫文件鏈接進(jìn)可執(zhí)行文件中,會(huì)導(dǎo)致文件較大申窘,如果lib目錄下既有so文件與a文件弯蚜,鏈接器會(huì)優(yōu)先使用動(dòng)態(tài)庫.so文件,這樣可執(zhí)行文件就不會(huì)太大剃法。