OpenEuler基础实验

一、OpenEuler的安装

我使用VmWare安装的OpenEuler,映像文件选择的是 openEuler-20.03-LTS-SP2-x86_64-dvd.iso
安装具体过程如下:
1、创建新的虚拟机

OpenEuler基础实验

2、选择典型
OpenEuler基础实验

3、暂不选映像文件
OpenEuler基础实验

4、选择其他、linux 4.x 64位
OpenEuler基础实验

5、对虚拟机进行命名

OpenEuler基础实验

6、这里分配大小我选择40G,虚拟磁盘设为单个文件
OpenEuler基础实验

7、创建成功
OpenEuler基础实验

8、更改设置
OpenEuler基础实验

9、选择自己下载好的映像文件,设置内核以及内存大小
OpenEuler基础实验

10、进入虚拟机,选择第一行并确定
OpenEuler基础实验

11、进行设置
OpenEuler基础实验

12、联网

OpenEuler基础实验

13、设置根密码,然后即可安装
OpenEuler基础实验
OpenEuler基础实验

14、点击安装后完成
OpenEuler基础实验
OpenEuler基础实验
OpenEuler基础实验

二、OpenSSL的安装,并测试

1、解压源代码

tar xzvf openssl-1.1.0-pre1.tar.gz 

OpenEuler基础实验

2、进入源代码目录:

cd openssl-1.1.0-pre1

OpenEuler基础实验

3、编译安装

./config

OpenEuler基础实验

make

OpenEuler基础实验

sudo install make

OpenEuler基础实验

4、查看帮助文档

man openssl

OpenEuler基础实验

5、编写一个测试代码test_openssl.c

#include <stdio.h>
#include <openssl/evp.h>

int main(){
	
    OpenSSL_add_all_algorithms();
	
    return 0;
}

OpenEuler基础实验

6、编译

gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread

报错,需要安装OpenSSL开发包

sudo yum install openssl-devel

OpenEuler基础实验

重新编译后通过,并执行

./to;echo $?

结果打印0
OpenEuler基础实验

三、实验

使用华为云服务器
OpenEuler基础实验

1、查找最大数
code

.section .data
.align 3
my_data:
        .quad 10
        .quad 22
        .quad 51
        .quad 81
        .quad 1250
        .quad 1313

my_data_count:
        .quad 6

.align 3    
print_data:
        .string "big data: %d\n"

.section .text
.globl main
main:
        stp x29, x30, [sp, -16]!

        ldr x0, =my_data
        ldr x1, my_data_count

        add x4, x0, #40

        mov x3, xzr
1:
        ldr x2, [x0], #8
        cmp x2, x3
        csel x3, x2, x3, hi

        cmp x0, x4
        b.ls 1b

        ldr x0, =print_data
        mov x1, x3

        bl printf

        ldp x29, x30, [sp], 16
        ret

编译后发现报错
OpenEuler基础实验

检查后是因为在新版本的linux 系统下安装 glibc-devel、glibc和gcc-c++时,都不会安装libc.a. 只安装libc.so. 所以当使用-static时,libc.a不能使用。只能报找不到libc了。

解决方法是安装 glibc-static

sudo yum install glibc-static

OpenEuler基础实验

重新编译,最大数为1313
OpenEuler基础实验

2、通过 C 语言调用汇编函数
main.c

#include <stdio.h>
extern int compare_data(int a, int b);
int main()
{ 
	int val;
	val = compare_data(5, 6);
	printf("big data: %d\n", val);
}

compare.s

.section .text
.globl compare_data
compare_data:
	cmp x0, x1	
	csel x0, x0, x1, hi
	ret

OpenEuler基础实验

上一篇:OpenEuler中C语言中的函数调用测试(选做)


下一篇:【汇编语言与计算机系统结构笔记08】如何实现循环(Loops),gcc历史上经历了多种转换模式(微体系结构角度解释),Switch语句,跳转表