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

96 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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

鲲鹏服务器先关机
创建镜像
选择系统盘镜像---》立即创建
等待创建成功后
申请新的服务器,使用自己创建的私有镜像