基于openEuler的OpenSSL编译安装和编程基础
购买华为云服务器
由于没有树莓派,所以直接略过树莓派安装openeuler的过程,直接去华为云上购买一个安装好openeuler系统的云服务器
OpenSSL编译安装
下载最新版本OpenSSL 1.1.1k的源码openssl-1.1.1k.tar.gz,然后把代码上传到openEuler云服务器中
https://www.openssl.org/source/openssl-1.1.1k.tar.gz
这里使用wget命令直接下载
建立两个文件夹,分别放置OpenSSL的源码和安装路径
记住pwd运行的结果
mkdir rocopensslsrc rocopenssl
cd rocopenssl
pwd
解压源代码到rocopensslsrc文件夹:
tar -zxvf openssl-1.1.1k.tar.gz -C rocopensslsrc
配置编译安装路径(/root/rocopenssl),和openEuler系统默认的不同。
cd rocopensslsrc/openssl-1.1.1k
./config --prefix=/root/rocopenssl
编译
make
安装
make install
查看安装后的版本,确定是最新安装的1.1.1k版:
cd ~/rocopenssl
./bin/openssl version
成功安装
OpenSSL命令的帮助使用openssl help查看
OpenSSL编程
编写一个测试代码test_openssl.c:
编译
/root/rocopenssl/include -L /root/rocopenssl/lib -lcrypto -lpthread
执行
./to;echo $?
结果打印0.
BASE64算法
写一个BASE64的测试代码testbase64.c
编译
gcc -o testbase64 testbase64.c -I /root/rocopenssl/include -L /root/rocopenssl/lib -lcrypto -lpthread
执行./testbase64
测试中的用到一个test.dat 是个二进制文件
内容是我的学号“20191220”
实验 3-1:在树莓派上安装 Raspberry Pi OS
无树莓派,使用的是华为云的openeuler,略
3.2 实验 3-2:汇编语言练习——查找最大数
输入书中的汇编代码test.s
gcc编译
gcc test. -o test -g --static
运行
./test
成功输出最大数
调试
openeuler安装gdb
yum install gdb
调试gdb --tui ./test
在 main 函数里设置一个断点
b main
输入“r”命令运行 test 程序。
然后就可以输入“s”进行单步调试。
可以使用“info reg”命令来查看寄存器的值。例如查看 x0 寄存器的值。
实验 3-3:汇编语言练习——通过 C 语言调用汇编函数
使用汇编语言实现一个汇编函数,用于比较两个数的大小并返回最大值,然后用
C 语言代码调用这个汇编函数。程序可使用 GCC(Aarch64 版本)工具来编译
编写compare.s 和 main.c
具体内容在https://github.com/figozhang/runninglinuxkernel_5.0/tree/rlk_5.0/kmodules/rlk_lab/rlk_basic/chapter_3_arm64/lab3
注意,不能直接使用make编译,因为还没有编写makefile文件
编写后可以成功运行C语言调用汇编语言函数
3.4 实验 3-4:汇编语言练习——通过汇编语言调用 C 函数
使用 C 语言实现一个函数,用于比较两个数的大小并返回最大值,然后用汇编代
码调用这个 C 函数。
编写compare.S main.c Makefile
实验 3-5:汇编语言练习——GCC 内联汇编
使用 GCC 内联汇编实现一个函数,用于比较两个数的大小并返回最大值,然后
用 C 语言代码调用这个函数
编写compare.c main.S Makefile
编译运行