潮声隔雨深 · 2020年10月27日

鲲鹏HCIA认证之技能进阶(二)

转自:CSDN
作者:楚疏笃

学练结合,技能全速进阶

1.Linaro交叉
交叉编译原理
为什么需要交叉编译?
步骤
2.Redis rpm打包
Linux目前安装软件的方式有三种
RPM介绍
步骤
3.Linux私有镜像制作
华为云镜像介绍
步骤
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包放置的路径

步骤

将源代码放到SOURCES文件夹中
在SPECS文件夹中配置spec文件
在 BUILD中完成源码的解压
在BUILDROOT中完成软件的安装
生成的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

鲲鹏服务器先关机
创建镜像
选择系统盘镜像---》立即创建
等待创建成功后
申请新的服务器,使用自己创建的私有镜像
更多鲲鹏HCIA认证练习题请关注中国芯动态
推荐阅读
关注数
2821
内容数
81
我芯扶摇九万里
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息