鯤鵬HCIA認證之技能進階(二)

1.Linaro交叉

交叉編譯原理

在當前編譯平臺下, 編譯出來的程序能運行在體系結構不同的 另一種目標平臺上,但是編譯平臺本身卻不能運行該程序(x86 平臺上編譯只能在ARM平臺上運行的程序)

爲什麼需要交叉編譯?

Speed:目標平臺的運行速度往往比主機慢得多,許多專用的嵌入式硬件被設計爲低成本 和低功耗,沒有太高的性能
Capability:整個編譯過程是非常消耗資源的,嵌入式系統往往沒有足夠的內存或磁盤空間 Availability:即使目標平臺資源很充足,可以本地編譯,但是第一個在目標平臺上運行的 本地編譯器總需要通過交叉編譯獲得
Flexibility:一個完整的Linux編譯環境需要很多支持包,交叉編譯使我們不需要花時間將 各種支持包移植到目標板上

步驟

軟件準備
1.代碼遷移工具–linaro–交叉編譯工具—X86包
硬件準備
1.基於x86的彈性雲服務器
2.基於鯤鵬計算的彈性雲服務器

X86:
安裝開發環境
yum -y groupinstall Development Tools
mkdir /usr/local/ARM-toolchain
cd /usr/local/ARM-toolchain/
wget https://releases.linaro.org/components/toolchain/binaries/latest-5/aarch64-linux-gnu/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
/usr/local/ARM-toolchain/
tar -Jxvf gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
mv gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu linaro
vim /etc/profile
export PATH=$PATH:/usr/local/ARM-toolchain/linaro/bin/
source  /etc/profile
aarch64-linux-gnu-gcc  -v
mkdir /tmp/test/
cd /tmp/test/
vim hello.c
------------------------------

#include <stdio.h>
int main(void)
{
printf("hello linux\n");
return 0;
}
---------------------------------
aarch64-linux-gnu-gcc -o kp-hello hello.c
./kp-hello
scp kp-hello ip地址:/tmp
鯤鵬服務器操作:
/tmp/kp-hello

2.Redis rpm打包

Linux目前安裝軟件的方式有三種

源碼安裝
自主製作的RPM包 能夠實現全自動安 裝,且可自定義安 裝路徑等配置 , 但需提前識別依賴 並手動安裝
yum安裝軟件
全自動安裝,自動 安裝依賴 ,但缺乏自主性,軟 件的功能和存放的 位置均已設置好
RPM安裝軟件
自主製作的RPM包 能夠實現全自動安 裝,且可自定義安 裝路徑等配置 ,但需提前識別依賴 並手動安裝

RPM介紹

允許分發已編譯的軟件,支持一鍵安裝軟件
優勢
內含編譯程序,免編譯
預先檢查系統版本,可避免 文件被錯誤安裝
提供軟件版本資訊,軟件名 稱,軟件用途等相關信息, 便於瞭解軟件
使用數據庫記錄RPM文件的 相關參數,便於升級、移除、 查詢與驗證
RPMbuild文件夾目錄結構
RPMbuild
BUID 編譯之前,如解壓包後存放的路徑
BUILDROOT 編譯後存放的路徑
RPMS 打包完成後RPM包存放的路徑
SOURCES 源碼包所放置的路徑
SPECS spec文檔放置的路徑
SRPMS 源碼RPM包放置的路徑

步驟

  1. 將源代碼放到SOURCES文件夾中
  2. 在SPECS文件夾中配置spec文件
  3. 在 BUILD中完成源碼的解壓
  4. 在BUILDROOT中完成軟件的安裝
  5. 生成的RPM包放置到RPMS,RPM源碼包放置到SRPMS下
    軟件準備
    1.redis源碼包
    硬件準備
    1.基於鯤鵬計算的彈性雲服務器
鯤鵬服務器:
yum -y install rpm-build
yum -y install wget
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
mkdir ~/rpmbuild
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
cd ~/rpmbuild/SPECS/
vim redis.spec
-------------------------
Name: redis
Version: 4.0.9
Release: 1%{?dist}
Summary: This is a RedisDB
License: GPL
URL: https://redis.io
Source0: redis-4.0.9.tar.gz
BuildRequires: gcc
#Requires: zlib-devel,readline-devel
%description
RedisDB
%prep
%setup -q
%build
make %{?_smp_mflags}
%install
make install PREFIX=%{buildroot}%{_prefix}
install -p -D -m 644 %{name}.conf %{buildroot}%{_sysconfdir}/%{name}.conf
chmod 755 %{buildroot}%{_bindir}/%{name}-*
mkdir -p %{buildroot}%{_sbindir}
mv %{buildroot}%{_bindir}/%{name}-server %{buildroot}%{_sbindir}/%{name}-server
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root,-)
%{_bindir}/%{name}-*
%{_sbindir}/%{name}-*
%config(noreplace)%{_sysconfdir}/%{name}.conf
%changelog
-------------------------
cp ~/redis-4.0.9.tar.gz  ~/rpmbuild/SOURCES/
rpmbuild -bb redis.spec
ls ~/rpmbuild/RPMS/aarch64
#安裝並測試
rpm -ivh ~/rpmbuild/RPMS/aarch64/redis-4.0.9-1.el7.aarch64.rpm
redis-cli -v
redis-server
redis-cli
ping
 set huawei m
get huawei

3.Linux私有鏡像製作

華爲雲鏡像介紹

鏡像分爲公共鏡像、私有鏡像、共享鏡像、 市場鏡像

步驟

軟件準備
1.私有鏡像
硬件準備
1.基於鯤鵬計算的彈性雲服務器X2

鯤鵬服務器先關機
創建鏡像
選擇系統盤鏡像---》立即創建
等待創建成功後
申請新的服務器,使用自己創建的私有鏡像
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章