海思arm-hisiv400-linux 交叉編譯FFmpeg

1、下載源碼包

http://ffmpeg.org/download.html#releases

2、解壓ffmpeg-4.1.5.tar.bz2

tar jxvf ffmpeg-4.1.5.tar.bz2

3、安裝ffmpeg

./configure --prefix=/home/xxx/work/xxx/ffmpeg-4.1.5/install --cross-prefix=arm-hisiv400-linux- --enable-cross-compile --target-os=linux --arch=arm --enable-gpl --enable-nonfree --enable-shared
--cross-prefix=PREFIX    use PREFIX for compilation tools []
--enable-cross-compile   assume a cross-compiler is used
--arch=ARCH              select architecture []

--cross-prefix=arm-hisiv400-linux-  //交叉編譯工具鏈
--enable-cross-compile              //啓用交叉編譯選項
--target-os=linux                   //目標平臺爲linux
--arch=arm                          //系統架構arm
--enable-gpl                        //啓用gpl
--enable-nonfree                    
--enable-shared
make 

make install

3.1ffmpeg ./configure參數說明

參考鏈接https://www.cnblogs.com/electron/p/3548039.html

 在交叉編譯中比較常見的一些參數就是build、host和target了


(1) --build=編譯該軟件所使用的平臺

     表示目前我們正在運行的平臺名稱是什麼,如果當前我們是在intel的pentium機器中編譯該系統,那麼我們的--build就可能是 i686-pc-linux-gnu,當然如果我們在其它種類的機器上編譯那麼這個build就應該是那個機器所對應的平臺名稱。
該參數在不指定的情況下將自動嘗試猜測目前平臺的名稱


(2) --host=該軟件將運行的平臺

 表示我們把這個編譯好的gcc在什麼樣的平臺下運行,在交叉編譯過程中這個需要我們來指定,因爲機器自己是不能知道我們心裏是怎麼想的,那 麼我們可以明確的告訴它,我們要做出來的程序是運行在“龍芯”上的,但是目前還不能直接指定“龍芯”,因此我們這裏指定爲mips64el- unknown-linux-gnu(如果你省點事情那麼就用這個名字好了,如果你想用個有個性的名字,那麼請你想明白它的含義再動手,並且做好後面的過 程需要多出一些手續的麻煩的心理準備)。
    --host也可以不指定,那麼host將自動使用build來定義自己,不過那將不再是交叉編譯。
    注:--build和--host在不同的時候就被配置文件認定爲交叉編譯方式。
(3) --target=該軟件所處理的目標平臺

    該參數的目的是讓配置程序知道這個軟件被編譯後使用來處理什麼平臺上的文件的。
 target這個參數只有在爲數不多的幾個包中有用處,雖然在./configure --help中經常能看到該參數,但實際上絕大多數軟件包都是不需要該參數的。
     從這個參數的含義來看,說明其處理的目標只有在不同平臺下表現爲不同的時候纔有作用,而這些文件通常都跟目標平臺 的指令系統直接或間接有關:比如可執行文件,對於不同平臺下使用的可執行文件的編碼可以是完全不同的,因此必須使用 對應能處理該編碼的程序才能正確處理,而如果錯誤的使用則可能導致程序錯誤或者破壞文件,對於這樣要處理不同平臺下會 出現不同編碼的軟件,我們就應當對它指定目標平臺,以免另其錯誤處理;而對於文本文件,對於不同的平臺同樣的內容表達的 含義都是相同的,因此我們不需要專門針對平臺來處理,這樣的軟件我們就可以不必對它指定需要處理的平臺了。

    我們來總結一下:
    build:自動測試在用平臺名稱,若無法檢測出來則需要指定。
    host:若無指定,自動使用build的結果。
    build和host相同時表示本地編譯,若不相同則表示交叉編譯。
    target:表示需要處理的目標平臺名稱,若無指定使用host相同名稱,gcc、binutils等於平臺指令相關軟件有此參數,多數軟件此參數無用處。


綜合的例子:
        我們需要在x86下編譯一個運行於arm上的編譯器gcc,這個gcc產生mips平臺的目標代碼。那麼我們的配置方式是:
        --build=x86   --host=arm    --target=mips

 

 

 

--prefix=PREFIX          安裝程序到指定目錄(默認/usr/local)|install in PREFIX [/usr/local]

--cross-compile          假定使用了交叉編譯 | assume a cross-compiler is used

 

-arch=arm 芯片方案

--target-os=linux  系統方案

--arch=arm

--cross-prefix=arm-hisiv200-linux- 交叉編譯工具鏈

--enable-gpl 如果需要使用GPL協議的部分代碼

--enable-nonfree 允許使用非自由代碼

--enable-shared          構建共享庫(默認關閉)build shared libraries [default=no]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章