當前位置:首頁 » 編程軟體 » 交叉編譯目錄

交叉編譯目錄

發布時間: 2025-03-23 14:53:08

『壹』 在 ubuntu-x86 下交叉編譯 ARM-64 NCNN 記錄貼

在 Ubuntux86 下交叉編譯 ARM64 NCNN 的步驟如下

  1. 配置主機環境

    • 確保已安裝 Docker。
    • 拉取基於 qemu 的 ARM64 鏡像,選擇與嵌入式板子版本相應的鏡像鏈接。
  2. 啟動 Docker 容器並掛載工作目錄

    • 配置工作目錄,例如 /home/ubuntu/Docker/cross。
    • 啟動 Docker 容器,並將工作目錄掛載到容器中,以便在本地模擬 ARM64 環境進行編譯。
  3. 在容器內編譯 NCNN

    • 按照官網教程拉取 NCNN 代碼到掛載的工作目錄中。
    • 在容器內更新源、安裝基礎包,並替換為清華鏡像源以獲取 ARM64 架構的依賴包。
    • 開始編譯 NCNN,編譯過程與直接在 ARM64 板子上相同。
    • 編譯產物默認位於 build/install 目錄下。
  4. 驗證和評估性能

    • 編譯完成後,可以將產物直接復制到板子上使用。
    • 或在容器內部運行 NCNNBenchmark 以評估性能,注意 x86 模擬 ARM64 的性能會有較大折扣。
  5. 編譯 python 封裝

    • 若需要編譯 NCNN 的 Python 封裝,在容器中安裝與板子上相同的 Python 版本。
    • 編譯好的 PyNCNN 庫位於 build/python 目錄下。
    • 可以將整個 NCNN 目錄復制到板子上,並使用 pip install e . 命令安裝。

總結: 使用 qemu 模擬 ARM64 實現的交叉編譯,無需配置本地交叉編譯器等額外環境,適用於正式部署前的驗證。 雖然編譯效率相比直接在 ARM64 板子上低,但相比嵌入式板子的性能有顯著提升。 此方案對其他庫的編譯依賴友好,如 QT 等復雜庫的交叉編譯也值得嘗試。

『貳』 FFmpeg開發筆記(八)linux交叉編譯Android的FFmpeg庫

在Linux環境中進行FFmpeg庫的Android交叉編譯,首先需要下載Linux版本的android-ndk-r21e。登錄Linux伺服器,例如華為雲的歐拉系統,執行以下步驟:

1. 進入`/usr/local/src`目錄:

cd /usr/local/src

2. 下載並解壓ndk:

curl -O dl.google.com/android/r...

unzip android-ndk-r21e-linux-x86_64.zip

接下來,你需要將FFmpeg及相關庫(如x264、freetype、lame)的源碼上傳到伺服器,並進行必要的修改:

- 解壓源碼,替換`SYSTEM=windows-x86_64`為`SYSTEM=linux-x86_64`,並確保sh文件無回車符。
- 修改`config_x264.sh`、`config_freetype.sh`等文件,賦予可執行許可權:

chmod +x config_*.sh

3. 編譯x264庫,修改configure文件並執行編譯:

修改configure文件

./config_x264.sh

make -j4

make install

4. 對其他第三方庫進行類似操作:

./config_xxx.sh

make -j4

make install

5. 配置環境變數`PKG_CONFIG_PATH`:

在.bash_profile中添加環境變數

source .bash_profile

6. 最後,編譯FFmpeg庫:

./config_ffmpeg_full.sh

make -j4

make install

完成後,可以在指定目錄找到so文件,並將其復制到App工程的jniLibs\arm64-v8a目錄,然後按照《FFmpeg開發實戰:從零基礎到短視頻上線》的章節「12.1.3 App工程調用FFmpeg的so庫」進行App的配置、編譯和運行。

『叄』 Linux 交叉編譯FFmpeg庫

Linux 交叉編譯FFmpeg庫

配置環境

在Linux上配置NDK環境和FFmpeg,首先下載並解壓NDK,配置/etc/profile的環境變數,然後下載FFmpeg,解壓後使用./configure --help查看幫助文檔。

FFmpeg包含libavformat、libavcodec、libavutil、libswscale、libpostproc等模塊,為各種音視頻封裝格式的生成和解析、聲音/圖像編解碼、公共工具函數、視頻場景比例縮放和色彩映射轉換、後期效果處理以及工具和伺服器等。

編寫編譯腳本

定義NDK路徑,指定GCC路徑,設置FLAGS結合Linux環境修改,參考externalNativeBuild/xxx/build.ninja的傳參內容。學習資料推薦,免費報名學習音視頻知識,資料包括C/C++、Linux、FFmpeg等。

配置參數

優化大小、不編譯ffmpeg程序(命令行工具)、關閉avdevice模塊、關閉所有編碼器、關閉所有復用器、關閉所有濾鏡、開啟交叉編譯、設置GCC的前綴、關閉動態庫、開啟靜態庫、傳給gcc的參數等。

執行make完成編譯輸出

編寫腳本過程中注意關閉asm、許可權要求、手動創建輸出文件夾、命令行格式等。

移植到Android項目中使用

創建NDK項目,將編譯好的include文件夾復制到/src/main/cpp目錄下,將ffmpeg lib目錄下的文件復制到armeabi-v7a目錄下,Cmake文件中引入庫,即可愉快使用FFmpeg庫。

FFmpeg是純C的庫,需要在代碼中進行引用。顯示ffmpeg版本號完成整個流程。

至此,Linux交叉編譯FFmpeg庫的流程介紹完成。

『肆』 如何交叉編譯perl

  • 先下載Perl源碼:https://www.perl.org/get.html , 下載版本是5.10.1

  • 下載Perl交叉編譯源碼補丁: https://sourceforge.net/projects/perlcross.berlios/files/, 下載版本是:perl-5.10.0-cross-0.3.tar.gz

  • 分別解壓連個文件到同一個目錄下;


  • 1

  • 在ubuntu中安裝 perlbrew:

  • sudo apt-get install perlbrew
    perlbrew init
    source ~/perl5/perlbrew/etc/bashrc
    perlbrew install perl-5.10.1
  • 2

  • 3

  • 4

  • 5

  • 等待perlbrew安裝完畢;


  • 2

  • 3

  • 1

  • 合並 兩個解壓出來的perl目錄,進入perl-5.10.1的Cross目錄中:

  • cp -rfv perl-5.10.0/* perl-5.10.1/
    cd perl-5.10.1/Cross


  • 2

  • 1

  • 文件內容如下注意加了星號的內容:

  • ### Target Arch
    ** ARCH = arm **
    #ARCH = i386-pc
    #ARCH = sh4
    #ARCH = mips
    #ARCH = mipsel
    #ARCH = ppc

    ## Specific arm
    **#CONFIG_TARGET_ARM_SA11X0 = 1**
    #CONFIG_TARGET_ARM_XSCALE = 1

    ### Target OS
    **OS = linux**
    #OS = solaris2.8
  • 1

  • 修改perl的config文件

  • gedit Cross/config ##或者 vi gedit Cross/config
  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13

  • 14

  • 15

  • 16

  • 上面加粗字體表示注意的或者修改的;

  • 修改當前目錄(Cross目錄)中的Makefile文件:
    先改變一下目錄內容的許可權:
    chmod 777 /Cross/*

  • 修改的Makefile文件內容:

  • export TOPDIR=${shell pwd}

  • include $(TOPDIR)/config

  • export CFLAGS

  • ** export SYS=arm-linux **

  • ** export CROSS=/stuff/bitbake/bin/tmp/sysroots/i686- linux/usr/armv7a/bin/arm-angstrom-linux-gnueabi- **

  • ** export LD_LIBRARY=/stuff/bitbake/bin/tmp/sysroots/i686-linux/usr/lib:$(LD_LIBRARY_PATH) **

  • export FULL_OPTIMIZATION = -fexpensive-optimizations -fomit-frame-pointer -O2

  • export OPTIMIZATION = -O2


  • export CC = arm-angstrom-linux-gnueabi-gcc

  • export CXX = arm-angstrom-linux-gnueabi-g++

  • export LD = arm-angstrom-linux-gnueabi-ld

  • export STRIP = arm-angstrom-linux-gnueabi-strip

  • export AR = arm-angstrom-linux-gnueabi-ar

  • export RANLIB = arm-angstrom-linux-gnueabi-ranlib

  • 12345678910111213141516

  • make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm patch

  • make CC=arm-angstrom-linux-gnueabi-gcc ARCH=arm perl

  • 編譯會出錯,但是沒關系,會在根目錄生成perl可執行文件;

熱點內容
女生密碼一般是多少 發布:2025-03-25 02:57:29 瀏覽:569
網路編程軟體 發布:2025-03-25 02:43:15 瀏覽:98
臨沂c語言 發布:2025-03-25 02:11:58 瀏覽:981
二維碼訪問密碼是多少 發布:2025-03-25 02:11:56 瀏覽:372
伺服器想ping通其他段的ip 發布:2025-03-25 02:11:22 瀏覽:219
安卓機皇現狀如何 發布:2025-03-25 02:04:54 瀏覽:319
機場密碼箱多少寸 發布:2025-03-25 01:46:27 瀏覽:843
php分離 發布:2025-03-25 01:42:10 瀏覽:162
加密型移動硬碟 發布:2025-03-25 01:39:41 瀏覽:270
公司域網伺服器搭建 發布:2025-03-25 01:29:04 瀏覽:763