導航:首頁 > 源碼編譯 > 交叉編譯標准輸出

交叉編譯標准輸出

發布時間:2025-01-13 22:33:12

linux編譯ffmpeg 以及交叉編譯並引入Android

在Linux環境下,編譯ffmpeg並進行Android交叉編譯的步驟如下:

首先,為支持mp3編碼,你需要安裝lame庫,可通過`ffmpeg -i audio.wav -acodec libmp3lame audio.mp3`進行測試。然後,編譯ffmpeg,常用的配置命令是`./configure --prefix=/usr/local/ffmpeg --enable-debug=3`,但可能會遇到錯誤,如gcc編譯器問題或nasm/yasm未找到。遇到這些問題,建議更新ffmpeg版本並檢查config.log日誌。

編譯時,可能遇到許可權問題,如`mkdir: cannot create directory '...': Permission denied`,這時需要確保有足夠的許可權。環境變數的配置也很重要,可以在.profile文件中添加`path`和`pkg_config_path`,配置後通過`source .profile`使更改生效。

在編譯過程中,如果ffplay沒有出現在bin目錄中,可能需要安裝sdl2並重新configure、make和install。如果遇到so文件鏈接問題,可以編輯`/etc/ld.so.conf`並運行`ldconfig`來解決。

為了在Android設備上使用ffmpeg,你需要下載Android NDK,然後執行`make-standalone-toolchain.sh`生成交叉編譯工具鏈。創建一個腳本(build_ffmpeg.sh),包含針對不同架構的編譯命令,注意調整工具鏈路徑、架構和輸出目錄。

在編譯ffmpeg時,可能需要額外添加x264支持以處理h264編碼。下載x264源碼後,同樣使用configure進行配置,但可能需要解決缺少nasm的問題。

總的來說,編譯ffmpeg涉及多個步驟,包括安裝依賴庫、配置環境、處理編譯錯誤和生成針對Android的交叉編譯版本。務必查閱文檔以確保正確設置和執行每個步驟。

⑵ 在ARM上運行交叉編譯後的opencv文件,沒有輸出

一、交叉編譯opencv
構造:

下載:各個庫的下載可以直接搜名字到官網下載
幾個關鍵解釋:
「--prefix=」 後邊跟make install時的位置,本例中,libz在make install時將安裝到/usr/arm-linux-gnueabihf中
「--host=」 後邊跟arm-linux表明使用的是ARM環境
有configure的才能進行configure配置
4)所有的makefile修改類似
Libz的交叉編譯
第一步:# ./configure --prefix=/usr/arm-linux-gnueabihf --shared
第二步:修改makefile,主要有下邊幾個,修改的時候通篇參照即可
CC=arm-linux-gnueabihf-gcc
AR=arm-linux-gnueabihf-ar rc
RANLIB=arm-linux-gnueabihf-ranlib
STRIP = arm-linux-gnueabihf-strip
如果有ARCH的話,ARCH=ARM
第三步:#sudo make
#sudo make install
Libjpeg的交叉編譯
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc
第二步:參考1)中方法修改makefile
第三步:#sudo make
#sudo make install
Libpng的交叉編譯
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc
第二步:參考1)中方法修改makefile
第三步:#sudo make
#sudo make install
Yasm的交叉編譯
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static
第二步:修改makefile
第三步:#sudo make
#sudo make install
Libx264的交叉編譯
第一步:#CC=arm-linux-gnueabihf-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/usr/arm-linux-gnueabihf
第二步:修改config.mak里的參數,因為makefile要調用config.mak,所以修改方法同makefile
第三步:#sudo make
#sudo make install
Libxvid的交叉編譯
第一步:首先切換目錄 #cd build/generic
第二步:#./configure --prefix=/usr/arm-linux-gnueabihf --host=arm-linux --disable-assembly
第三步:#sudo make
#sudo make install
ffmpeg的交叉編譯
第一步:
./configure --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-yasm --disable-stripping --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/arm-linux-gnueabihf/include --extra-ldflags=-L/usr/arm-linux-gnueabihf/lib --prefix=/usr/arm-linux-gnueabihf
第二步:修改makefile文件
第三步:#sudo make
#sudo make install
第四步:將ffmpeg加入pkg-config
執行#sudo gedit /etc/bash.bashrc,在末尾加入
export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/arm-linux-gnueabihf /lib/pkgconfig
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/usr/arm-linux-gnueabihf /lib/
完畢後使用命令:#source /etc/bash.bashrc
或者單獨使用三個export,不過壽命只在一個終端中,終端關閉時就失效。
幾個關鍵解釋:--extra-flags指向xvid的安裝路徑,--extra-ldflags指向x264的路徑
安裝cmake-gui
執行:#sudo apt-get install cmake-qt-gui
Opencv的交叉編譯
第一步:修改opencv/platflrms/linux/目錄下的arm-gnueabi.toolchain.cmake,將其所有刪掉,寫入:
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc )
set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ )
第二步:在opencv目錄下新建build目錄,進入build目錄,執行命令:
#cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ../
這時,要保證出現:

第三步:使用cmake-gui打開CMakeCache.txt,去掉所有的無關項,修改CMAKE_INSTALL_PREFIX,來確定make install的目錄
第四步:#sudo make
#sudo make install
可能出現的錯誤:
opencv編譯不通過,出現skip之類的,說明ffmpeg沒編譯好,或者其編譯好了,但是pkg-config沒有設置好,一定要設置好其環境
前邊幾步不通過的話,看看命令有沒有少,或者有沒有修改好makefile
在arm上使用時,一種方法時直接將編譯好的opencv目錄下的lib文件拷貝到開發板對應的/lib目錄下,其他或者拷貝到自己指定的目錄,並設置好環境變數即可使用

閱讀全文

與交叉編譯標准輸出相關的資料

熱點內容
pl0語言編譯程序的認識 瀏覽:333
如何查看伺服器內核組件 瀏覽:655
什麼賺錢app賺的錢快 瀏覽:930
雲喲科技為什麼要買伺服器 瀏覽:657
python搭建web伺服器 瀏覽:518
上位機是程序員么 瀏覽:414
20萬伺服器怎麼樣 瀏覽:931
光遇為什麼之前沒有安卓服 瀏覽:745
移動硬碟顯示可用加密 瀏覽:946
python萬能庫開發 瀏覽:875
向日葵遠程解壓 瀏覽:883
androidedittext布局 瀏覽:320
題庫管理app哪個好用 瀏覽:989
安卓游戲中亮度自動調節如何關閉 瀏覽:892
求派演算法 瀏覽:551
pythonweb編程實例 瀏覽:190
鞋盒怎麼做文件夾收納盒視頻 瀏覽:757
模擬電子技術第四版pdf 瀏覽:961
解壓車貸後gps怎麼找 瀏覽:352
源碼資料庫怎麼配備 瀏覽:138