centos7在編譯hisi3518e_sdk時遇到的問題

開發的環境選用的時centOS7.2的系統

目錄

1.遇到的解壓縮包時出現的問題

2.環境變量的寫入

3.centos7 64bit安裝32位兼容包

4.uboot編譯出錯了,未能找到mkimage

5.[mkyaffs2image100] Error 1

6.zlib庫錯誤

7.libncurses or libncursesw not found


====================================================

1.遇到的解壓縮包時出現的問題

只需yum 安裝 yum -y install bzip2 這個問題就可以解決了。

 

2.環境變量的寫入

首先是設置全局環境變量,對所有用戶都會生效:

1、/etc/profile: 此文件爲系統的每個用戶設置環境信息。當用戶登錄時,該文件被執行一次,並從 /etc/profile.d 目錄的配置文件中搜集shell 的設置。一般用於設置所有用戶使用的全局變量。
2、/etc/bashrc: 當 bash shell 被打開時,該文件被讀取。也就是說,每次新打開一個終端 shell,該文件就會被讀取。

對單個用戶生效:

1、~/.bash_profile 或 ~/.profile: 只對單個用戶生效,當用戶登錄時該文件僅執行一次。用戶可使用該文件添加自己使用的 shell 變量信息。另外在不同的LINUX操作系統下,這個文件可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一種或幾種,如果存在幾種的話,那麼執行的順序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系統一般是 ~/.profile 文件。
2、~/.bashrc: 只對單個用戶生效,當登錄以及每次打開新的 shell 時,該文件被讀取。

此外,修改 /etc/environment 這個文件也能實現環境變量的設置。
/etc/environment是設置整個系統的環境,而/etc/profile是設置所有用戶的環境,前者與登錄用戶無關,後者與登錄用戶有關。
注:系統是先執行/etc/environment,再執行/etc/profile

以修改/etc/profile 爲例:

PATH="$PATH:/root/.config/composer/vendor/bin"
export PATH

執行

source /etc/profile

使其立即生效。
如果想多加個路徑yourpath1,在將“:yourpath1” 加載path後面,如:
PATH=”$PATH:/root/.config/composer/vendor/bin:yourpath1”

 

3.centos7 64bit安裝32位兼容包

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

解決辦法:
參考到:

https://blog.csdn.net/liushihuidfg/article/details/46442209

https://www.linuxidc.com/Linux/2013-04/82494.htm

[root@localhost ~]# yum search glibc

[root@localhost ~]# yum install glibc.i686

要安裝32位的就選glibc.i686,64位就選glibc.x86_64。

 1)執行命令: yum whatprovides libstdc++.so.6
 
然後會提示哪個安裝包有這個庫文件如下:
 

[root@Mrtan osdrv]# yum whatprovides libstdc++.so.6
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
libstdc++-4.8.5-39.el7.i686 : GNU Standard C++ Library
Repo        : base
Matched from:
Provides    : libstdc++.so.6

2)然後執行:

[root@Mrtan osdrv]# yum install libstdc++-4.8.5-39.el7.i686

3)如果安裝上面的操作還是有問題:error while loading shared libraries: libz.so.1: cannot open shared object file: No such

或者直接建議直接執行下面的操作:

(參考到博客:https://blog.csdn.net/u011473614/article/details/44733153?utm_source=blogxgwz9

yum install glibc libstdc++ libgcc libX11.i686 libXext.i686 libao.i686 alsa-lib.i686 -y

或者:
yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib-devel.i686 ncurses-devel.i686 libX11-devel.i686 libXrender.i686 libXrandr.i686 -y
如果在控制檯出現 error while loading shared libraries: libz.so.1: cannot open shared object file: No such(一般都會出現)
file or directory 錯誤提示也是軟件 32 位包兼容的問題(該問題將導致無法自動生成 R.java 文件)
解決辦法:
yum install zlib.i686

 

4.uboot編譯出錯了,未能找到mkimage

解決方法:

將編譯生成的mkimage工具放到我們全局的文件夾下,能訪問的到。

 

5.[mkyaffs2image100] Error 1

錯誤描述:

/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make[2]: *** [mkyaffs2image100] Error 1
make[2]: Leaving directory `/work/hi3518e/Hi3518E_SDK_V1.0.4.0/osdrv/tools/pc/mkyaffs2image/mkyaffs2image'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/work/hi3518e/Hi3518E_SDK_V1.0.4.0/osdrv/tools/pc/mkyaffs2image'
make: *** [hipctools] Error 2

問題所在,沒有安裝靜態庫

解決方法:yum install glibc-static

 

6.zlib庫錯誤

compr_zlib.c:39:18: fatal error: zlib.h: No such file or directory

編譯到此處時,uboot和kernel是對應編譯完成了

問題定位:系統中沒有安裝zlib的庫

解決方法有兩個:

1)在我們使用的SDK中Hi3518E_SDK_V1.0.4.0是有這個工具的

zlib.h在osdrv/tools/pc/zlib/tmp/include目錄中有,只需要複製到osdrv/tools/pc/jffs2_tool/tmp/include目錄中即可。注意同時要將zconf.h也複製過去的。還有,要將tools/pc/jffs2_tool/tmp/lib目錄下的libz.a  libz.so  libz.so.1  libz.so.1.2.7等4個文件複製到tools/pc/jffs2_tool/tmp/lib目錄下。

[root@Mrtan pc]# ls
cramfs_tool  jffs2_tool  mkimage_tool   nand_production  ubifs_config  zlib
ext4_utils   lzma_tool   mkyaffs2image  squashfs4.2      uboot_tools
[root@Mrtan pc]# cd jffs2_tool/
[root@Mrtan jffs2_tool]# ls
lzo-2.09.tar.gz  Makefile  mtd-utils-1.5.0.tar.bz2  tmp
[root@Mrtan jffs2_tool]# cd tmp/
[root@Mrtan tmp]# ls
include  lib  lzo-2.09  mtd-utils-1.5.0  share
[root@Mrtan tmp]# cp ./../../zlib/tmp/include/zlib.h   ./include/
[root@Mrtan tmp]# cp ./../../zlib/tmp/include/zconf.h   ./include/
[root@Mrtan tmp]# cp ./../../zlib/tmp/lib/
libz.a         libz.so        libz.so.1      libz.so.1.2.7  pkgconfig/     
[root@Mrtan tmp]# cp ./../../zlib/tmp/lib/*  ./lib/
cp: omitting directory ‘./../../zlib/tmp/lib/pkgconfig’
[root@Mrtan tmp]# pwd
/work/hi3518e/Hi3518E_SDK_V1.0.4.0/osdrv/tools/pc/jffs2_tool/tmp
[root@Mrtan tmp]# 

7.libncurses or libncursesw not found

這個也是對應的庫沒有

yum install ncurses-devel

 

--->安裝完後,最後出現

這裏因爲我們不需要cramfs,只需要jffs就可以了,所以最好的方法是改配置文件,去掉jffs下面部分的文件系統格式的編譯。最後在進行編譯就可以完成sdk的編譯了

 

 

 

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