本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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
鲲鹏服务器先关机
创建镜像
选择系统盘镜像---》立即创建
等待创建成功后
申请新的服务器,使用自己创建的私有镜像