導航:首頁 > 源碼編譯 > 海思本地編譯

海思本地編譯

發布時間:2023-09-24 08:46:50

linux 編譯安桌系統 海思

一般是編譯之前的配置出問題了,好好看看readme,根據你自己的環境重新configure一下。

Ⅱ 海思hi3520編譯x264庫嗎

剛到手的Hi3520開發板,拿來第一件事當然是搭環境,本來調了那麼多板子,這不是小菜一碟嘛,可就是掛NFS還浪費了快一個小時,郁悶的了,這倒也好,順著Hi3520的脈絡,就把這個環境搭建過程記錄一下,權當記個筆記噻。。。
買的是雅儀科技的Hi3520開發板,板子還是蠻好看滴,6800大洋。因為最多要驅動八塊sata硬碟,所以板子採用的是計算機的ATX電源。拿過來之後立馬接上串口,上電,擦,毫無反應,這是神馬情況,打電話一問才知道板子本身接出來的串口不是調試串口,UART0要我自己做根線接出來,我勒個去。。。
然後開始掛NFS,本來很簡單的一件事兒,可就因為公司的網路折騰了我好一會兒,我自己習慣用ubuntu,可ubuntu嚴重依賴網路啊,公司的網路受限,我執行sudo apt-getinstall nfs-kernel-server丫根本不能裝,么有辦法了,只能曲線救國,換成Fedora,這下能搞的吧。
這里把ubuntu和Fedora下NFS掛載的基本步驟說明下,後面再說明下要注意的問題:
先說ubuntu下面的:
1、安裝nfs服務
執行命令:sudo apt-get install nfs-kernel-server
安裝nfs-kernel-server時會自動安裝nfs-common和portmap
2、修改/etc/exports文件
執行命令:vim /etc/exports
一般剛安裝的nfs-kernel-server服務則這個文件內容應該為空,在文件中加上下面一行
/root/Hi3520192.168.1.244(rw,sync,no_root_squash)
這里的/root/Hi3520表示你linux主機上的共享目錄,IP地址你可以改為你開發板的IP,後面的參數網上說的已經很多了,不必過多說明
3、設置linux主機的IP地址,這個不用多說了哎
4、重啟nfs服務
執行命令:
sudo/etc/init.d/portmap restart
sudo/etc/init.d/nfs-kernel-server restart

再說Fedora下面的:
Fedora下面稍微復雜,但是Fedora的NFS服務在安裝系統的時候已經存在,我們只需配置並將其開啟
1、開啟nfs服務
在終端下輸入setup,在彈出的菜單中選擇「系統服務」,講其中的netconsole,netplugd,nfs服務選上(按空格鍵選擇或者取消)。並按TAB鍵確認退出
在終端中輸入service nfs restart重啟nfs服務
2、修改/etc/exports文件
此處同ubuntu中的操作
3、設置linux主機端的網路
這里就不僅僅是設置IP了,還要設置下網路
在虛擬機(我這里用的是VMware)菜單中依次選擇」edit->virtual networksetting->Host virtual network mapping」,在第一個下拉菜單中選擇一個已經存在的網卡,就是你PC上真實的網卡,並按「應用」,「確認」
關閉虛擬機,確認Network connection為bridged模式

上面是linux主機端的一些設置,下面說點需要注意的問題,因為我們很多人掛NFS的時候是將PC機和開發板用一根網線直接連接,這個時候IP地址你可以隨便設,但是這樣的話在開發的時候就不能上網了,所以很多人利用一個小humble將PC機和開發板同時接入區域網中,這個時候設置IP的時候您就不要昏頭了啊,一定要先確認這個IP是能用的哎,還有就是虛擬機的network connection要選橋接呀。

再說下Hi3520開發板的設置吧,我看很多開發板是通過在uboot中設置bootargs讓linux啟動的時候就直接掛載NFS,而海思的板子都是在板子進入linux之後通過執行腳本來掛載NFS的,個人覺得後者比較靈活,我想掛就掛,前者就略顯麻煩了哎
海思的文檔裡面信誓當當的把腳本寫好啦
modprobe mmzmmz=ddr,0,0xC2000000,16M /*插入mmz模塊,網口驅動會使用該模塊*/
modprobe hiether /*插入網口驅動模塊*/
ifconfig eth0 hw ether00:10:85:18:01:84 /*配置MAC地址*/
ifconfig eth010.85.180.184 netmask 255.255.254.0 /*配置IP地址和子網掩碼*/
route add default gw10.85.180.1 /*配置默認網關*/
modprobe nfs /*插入NFS模塊*/
mount -t nfs -o nolock10.85.180.133:/home/c54122/glibc-nfs /mnt
和3515的文檔上一模一樣,可是你丫網卡驅動有變化呀,不負責任哎,改了連文檔也不更新,而且我這板子上用的是千兆網卡,還得設置一下模式,我擦,貼上我的腳本內容,IP地址和主機端的NFS目錄根據情況自己改呀
modprobemmz mmz=ddr,0,0xC2000000,16M
modprobeh2gether port_mode=1
ifconfigeth0 hw ether DC:07:C1:FE:26:D3
ifconfigeth0 192.168.1.244 netmask 255.255.255.0
routeadd default gw 192.168.1.1
modprobenfs
mount-t nfs -o nolock 192.168.1.233:/root/Hi3520 /mnt
執行這個腳本,NFS就掛載上啦,然後可以開發嘍

最後還有一個問題注意下,ubuntu下安裝3520的SDK時,可能很多人會報錯,那是ubuntu將默認的shell改成了dash,改回去就是了呀,執行命令sudo dpkg-reconfigure dash,然後選擇「否」,over!

Ⅲ 海思3516DV300搭建交叉編譯環境問題記錄

剛開始搭建海思交叉編譯環境的時候遇到問題:

安裝完arm-himix200-linux後,輸入arm-himix200-linux -v,會出現如下錯誤:

xxx@xxx-virtual-machine:~/Downloads/study3516DV300/rp-hi3516dv300-busybox/sample/hifb$ arm-himix200-linux-gcc -v

arm-himix200-linux-gcc: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.

錯誤方法:

export LC_CTYPE=C.UTF-8

這樣做的話,arm-himix200-linux-gcc -v會顯示成功,但是當去編譯sample時候,會出現這個錯誤

collect2: fatal error: /opt/hisi-linux/x86-arm/arm-himix200-linux/host_bin/../lib/gcc/arm-linux-gnueabi/6.3.0/../../../../arm-linux-gnueabi/bin/nm terminated with signal 6 [Aborted], core mped

解決方案:

vi ~/.bashrc

最後加入這兩句,完成後保存

export LC_ALL=C

export PATH="/opt/hisi-linux/x86-arm/arm-himix100-linux/bin:$PATH"

編輯之後使環境變數生效的命令:source ~/.bashrc

之後編譯sample通過,生成sample_hifb文件。

Ⅳ 三、內核&文件系統編譯

一、編譯官方提供的內核源碼

1、解壓官方提供的內核源碼包

2、根據官方提供的配置文件對內核進行配置,方式如下
make  ARCH=arm      xxxxx_defult_config
cp   arch/arm/xxxxx_config    .config

3、打開圖形界面對內核進行配置,根據需要增加或者刪除模塊和其他內容

4、對內核進行編譯
make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    uImage  -j6
或者編輯Makefile文件,對其中的ARCH變數和CROSS_COMPILE變數進行修改,然後執行make uImage

5、在編譯編譯的時候回出現mkimage命令缺失,這個命令是UBootr提供的,在編譯的UBoot路徑下面找到這個命令,即可直接使用

6、編譯的時候各個方面需要一致性,
                1、編譯的內核的交叉編譯工具鏈如果支持硬體浮點數運算那麼在配置內核的時候也需要添加硬體浮點數的支持
                        Kernel Features --->
                            [*] Use the ARM EABI to compile the kernel
                2、在編譯的內核的時候注意保持不要做太多的修改,否則會出問題

7、編譯內核模塊
    make  ARCH=arm    CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi-    moles  -j6

8、安裝內核模塊到指定的目錄中去
make moles_install ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-uclibcgnueabi- INSTALL_MOD_PATH=/home/fu/hisi/kernel/build

9、不要採用內核模塊安裝的命令來安裝內核,因為內核不需要安裝,在arch/arm/boot/uImage就是所需要的內核文件

二、編譯官方提供的busybox來構建根文件系統

1、解壓需要編譯的busybox源碼

2、進入源碼中對busybox進行配置,主要是配置交叉編譯工具鏈
Busybox Settings --->Build Options ---> 下面有關於busybox是否配置為採用共享庫的模式,還有添加交叉編譯工具鏈的前綴

3、配置需要的文件和命令進行添加或者刪除

4、然後執行命令make -jn   && make install

5、創建根文件系統需要的其他的文件和目錄,在一個空白的目錄中首先拷貝busybox/_install下面的bin、sbin、usr目錄到空白目錄中,在空白目錄中創建其餘的所需要的目錄文件 bin dev etc home lib linuxrc mnt opt proc sbin sys tmp usr var等以上目錄

6、接下來在lib目錄中復制內核模塊,在編譯內核的時候模塊安裝在了指定的地方,直接拷貝過來就行。

6、創建文件系統所需要的其他文件,配置文件(最簡單的辦法就是直接復制busybox文件下面的example文件夾裡面的東西)
1、/etc/inittab     填寫或者    一下是最基本的,還有其他的需要填寫
# /etc/inittab
::sysinit:/etc/init.d/rcS                    //指定初始化腳本
::askfirst:-/bin/sh                            //指定第一次輸入回車後打開的shell
::ctrlaltdel:/sbin/reboot                //指定這三個按鍵按下後的反應
::shutdown:/bin/umount -a -r        //指定關機是進行的操作

2、/etc/init.d/rcS                //這個就沒有詳細額硬性規定了,寫入需要初始化的東西即可
#!/bin/sh
mount -a

3、/etc/fstab                        //寫入mount -a是要自動掛載的文件系統
# device mount-point type options mp fsck order
proc          /proc        proc  defaults        0    0
tmpfs          /tmp        tmpfs  defaults        0    0

7、拷貝需要用到的庫文件,在交叉編譯工具鏈下面存放
arm-linux-xxxxxx-gcc/lib
海思的開發板是在和tahet/lib下面,切記。

Ⅳ 物聯網實踐 | Huawei LiteOS開發環境搭建及Demo程序在Hi3861上編譯燒錄運行

本次實踐是為嘗試在嵌有華為海思晶元的 Hi3861 WIFI物聯網開發板上配置開發環境並使用配套開發工具( HUAWEI DevEco Device Tool 或 HUAWEI LiteOS Studio )將Demo工程編譯燒錄和運行。

參照華為海思編撰的 《物聯網技術和應用》 進行搭建。

1.確認開發環境已經正確安裝後,啟動 Huawei LiteOS Studio

2.新建工程, SDK版本 選擇 HiHope WiFi_IoT Hi3861SPC025 ;
SDK目錄 在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_WiFi-IoT_Hi3861SPC025 ;
參考目錄 選擇在HiSpark_Pegasus_TechnologyApplication_IoT_Kit下的 HiHope_Pegasus_HelloWorld 。
目標板Hi3861V100。

3.按F4進入工程配置, 目標板配置 中:廠商 HiSilicon ,選中目標板 Hi3861V00 ,確認。

4. 編譯器配置森滲散 中:SConstruct腳本,點擊文件夾右側的放大鏡自動搜索SConstruct腳本位置,正常搜索完點確認。

5. 燒錄器配置 中:燒錄方式選擇 HiBurner ,確認。

6. 串口配置 中:成功連接Hi3861板後,埠選擇唯一一個COM埠;波特率選擇 921600 ,確認。

7.F7 編譯 ,成功此氏時終端輸出紫色 BUILD SUCCESS 字樣。

8.F8 燒錄 ,出現HiBurn程序窗口時,按一次喊鏈Hi3861板上的Ret按鍵,燒錄開始。成功時如圖:

9.燒錄完成,重新拔插數據線,HelloWorld程序運行正常,OLED屏上顯示Hello World字樣,Hi3861板上LED燈閃爍。

Ⅵ 海思平台配置toolchain.cmake

交叉編譯,在我們的host宿主機器上需要生成target目標機器的程序, 使用CMake的Toolchain管理這里的各種環境變數和配置,就很好.

CMake給交叉編譯預留了一個變數-- CMAKE_TOOLCHAIN_FILE , 它定義了一個文件的路徑, 這個文件就是 toolchain ,我們可以在裡面配置 C_COMPILER , CXX_COMPILER ,如果用Qt的話需要更改 QT_QMAKE_EXECUTABLE 以及如果用 BOOST 的話需要更改的 BOOST_ROOT (具體查看相關 Findxxx.cmake 裡面指定的路徑), 因此,這個 toolchain 內嵌了一系列需要改變並且需要set的交叉環境的設置.

下面歸納一些比較重要的:

下面是一個常規的配置

這樣就完成了相關toolChain的編寫,之後,你可以靈活的選擇到底採用宿主機版本還是開發機版本,之間的區別僅僅是一條 -DCMAKE_TOOLCHAIN_FILE=./cross.toolChain.cmake ,更爽的是,如果你有很多程序需要做轉移,但目標平台是同一個,你僅僅需要寫一份toolChain放在一個地方,就可以給所有工程使用。

稍微大一點的項目都會用到一些外部依賴庫或者tool,CMake提供了 FIND_PROGRAM() , FIND_LIBRARY() , FIND_FILE() , FIND_PATH() and FIND_PACKAGE() 等命令來進行外部依賴的搜索查找。

但是有個問題,假如我們在給一個ARM處理器的移動設備做交叉編譯,其中需要尋找 libjpeg.so ,假如 FIND_PACKAGE(JPEG) 返回的是 /usr/lib/libjpeg.so ,那麼這就會有問題,因為找到的這個 so 庫只是給你的宿主機系統(例如一個x86的Ubuntu主機)服務的,不能用於Arm系統。所以你需要告訴CMake去其它地方去查找,這個時候你就需要配置以下的變數了:

在工程中一般通過如下步驟, 進入工程文件, 創建 arm-himix200-linux.cmake 文件, 內容是:

然後創建build文件夾, 進行編譯(注意, 需要指定 CMAKE_MAKE_PROGRAM , 不指定的話好像編譯有問題...):

在我的 toolchain 文件中,我指定:

因為我項目中 CMakeLists.txt 中需要查找 OpenSSL 和 curl , 因此會用到CMake自帶的 FindOpenSSL.cmake 和 FindCurl.cmake 兩個腳本, 他們會用到 Findxxx 命令, 會去我指定的目錄去搜索對應的庫

https://www.cnblogs.com/rickyk/p/3875334.html
http://www.cmake.org/Wiki/CMake_Cross_Compiling

閱讀全文

與海思本地編譯相關的資料

熱點內容
安卓快手下載怎麼沒有下載到本地 瀏覽:228
怎麼在安卓手機登繪旅人 瀏覽:404
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19