1.【学习笔记】Nutshell RISC-V CPU【001 环境搭建】
2.Lua语言:协程
3.docker镜像中安装python库
4.Ubuntu编译MySQL5
5.libvirt安装流程
6.liunx UOS deepin安装Python3.8.5/3.9.0
【学习笔记】Nutshell RISC-V CPU【001 环境搭建】
在探索RISC-V CPU的码下Nutshell环境搭建过程中,首先确保在vmware中运行Ubuntu ARM .操作系统。码下虽然在Mac上理论上可行,码下但可能遇到诸多问题。码下遇到time指令相关问题时,码下可安装gnu time并将其别名设置为time。码下手机app源码
参考文档包括前端开发环境的码下官方文档和Ubuntu . RISC-V编译仿真环境的搭建指南,特别是码下关于mill、riscv工具链和verilator的码下安装。在安装过程中,码下跳过了部分步骤,码下并根据文档2进行优化,码下将这些工具独立安装在RISCV目录中,码下以供其他项目使用。码下
下载香山仿真实环境后,码下安装开发工具成为关键步骤。首先创建目录并设置环境变量,接着安装依赖工具和库,如device-tree-compiler。在Ubuntu .的RISC-V环境中,需要安装riscv-gnu-toolchain和riscv-tools。在编译过程中,可能遇到诸如编译错误和config.guess问题,ucc源码需要添加相关文件头和更新脚本文件。
安装mill和verilator时,分别参照Unbuntu.安装Verilator的教程,并在verilator中执行autoupdate和autoconf。对于特定问题,如V3Const.cpp中的头文件缺失,需手动添加。在设置编译Nutshell环境时,需修改nexus-am/am/arch/isa/riscv.mk和setup.sh文件,以确保正确配置。
测试Nutshell的过程涉及到修改xs-env/nexus-am/am/arch/isa/riscv.mk和setup.sh,以及参照env-test.sh进行步骤。在安装过程中,mac M1用户可能会遇到mill运行问题,可能需要针对M1平台进行特定的Java设置。
最后,确保安装所需的库,如libsqlite3-dev、libreadline-dev、libsdl2-dev和bison,以支持difftest和NEMU的编译。在编译Nutshell时,Soa源码需要对Makefile中的git操作进行注释以避免错误,并执行make进行编译,确认最终在build目录中生成了预期的编译结果。
Lua语言:协程
Lua的协程,与系统中的线程类似,皆为独立执行单元。关键区别在于,线程并行执行,而协程则为协作式的,同一时刻仅有一个协程在执行,且在自身显式请求暂停时,执行权才会转移。
coroutine库提供了Lua中协程所需的功能。Lua参考手册内有实例,展示了协程执行流程,建议深入阅读。
PIL(Program In Lua)中,使用协程将基于事件的异步库转换为同步方式的示例值得推荐。在服务器编程中,常用异步框架如nodejs,多采用回调函数来处理异步操作,操作流程复杂,dpi源码代码易混乱。PIL提供了一个简单的事件库。
传统实现方式,通过lib.readline和回调函数实现读写操作,直至操作完成。lib.runloop进行消息循环,不断执行命令队列中的命令。这需要复杂理解。
使用协程对事件库进行封装,使操作流程直观、易于理解。逻辑代码简化,逻辑执行流程清晰可见,协程特性帮助实现同步操作,提高代码可读性和效率。
实际工程中,事件库可能涉及网络数据获取,但整体框架遵循相似逻辑。协程技术在此类场景下展现优势,简化异步操作流程,提升代码可维护性。
docker镜像中安装python库
在Docker镜像中安装Python库的awk源码步骤如下:
首先,进入容器内,可以通过执行`cat /etc/issue`查看容器当前的操作系统信息,以及确认镜像源,如`/etc/apt/sources.list`。
接下来,确保软件包的更新,运行`apt-get upgrade -y`。为后续安装Python库做准备,安装必要的编译工具和依赖,包括`gcc`, `automake`, `autoconf`, `libtool`, `make`,以及`make*`, `zlib*`, `openssl`, `libssl-dev`, `libbz2-dev`, `liblzma-dev`和`libreadline-dev`。
然后,为了方便管理,添加`sudo`权限并安装`wget`,以便下载Python安装包。直接从Python官网下载最新版本的Python安装包到`/usr/local`目录,例如`wget python.org/ftp/python/3...`。
进入下载的Python安装包文件夹,解压并配置安装路径,如`mkdir python3`,`cd Python-3.8.`,使用`./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl`,确保`--with-ssl`选项与`openssl-dev`的安装匹配。
编译和安装Python,通过`make`和`make install`完成。为了方便使用,创建软链接将新安装的Python和pip指向`/usr/bin`,如`ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3` 和 `ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3`。
最后,通过运行`python3 -V`和`pip3 -V`来验证Python和pip的安装是否成功。如果在导入`cv2`时遇到`ImportError: libGL.so.1: cannot open shared object file: No such file or directory`的问题,可以尝试安装`opencv-python-headless`来解决这个问题。
通过这些步骤,你可以在Docker镜像中成功安装Python及其相关库。
Ubuntu编译MySQL5
解决Ubuntu编译MySQL5源码时遇到的"找不到curses/termcap库"问题,关键在于确保系统已经正确安装了libncurses5-dev。此库在CentOS环境下可能已自动安装,但在Ubuntu中,需要手动执行指令安装。具体步骤如下:
首先,确认是否已安装libncurses5-dev:
在Ubuntu中使用指令
./configure –with-named-curses-libs=/usr/lib/libncurses.so.5
此行命令用于指定编译时使用特定的libncurses库版本。然而,为了简化此过程,推荐在编译前先解决libncurses5-dev的缺失问题。
解决方法如下:
使用
sudo apt-get install libncurses5-dev
指令安装libncurses5-dev。
安装完成后,重新执行编译步骤,通常无需手动指定lib路径,系统会自动识别并使用正确的库。
编译MySQL5源码的具体步骤如下:
1. 使用
sudo groupadd mysql
创建名为mysql的用户组。
2. 使用
sudo useradd -g mysql mysql
创建名为mysql的用户,并将该用户添加到之前创建的mysql组中。
3. 解压缩并解压MySQL源码包。
4. 进入解压后的目录并执行编译配置:
./configure –prefix=/usr/local/webserver/mysql/ –enable-assembler –with-extra-charsets=complex –enable-thread-safe-client –with-big-tables –with-readline –with-ssl –with-embedded-server –enable-local-infile –with-plugins=innobase
5. 执行编译并安装:
make && make install
6. 调整文件权限:
chmod +w /usr/local/webserver/mysql
7. 更改文件所有权:
chown -R mysql:mysql /usr/local/webserver/mysql
完成上述步骤后,MySQL5在Ubuntu环境下应能成功编译并安装,无需额外指定库路径。
libvirt安装流程
by TANG Jia
本测试通过的版本号为:ubuntu.、libvirt1.1.2
安装libvirt:
1,安装virtinst
apt get installvirtinst
安装libvirt之前首先安装virtinst目的是为了使后面编译安装libvirt时,覆盖安装virtinst时自带的libvirt的版本,这点很重要。之后才能编译安装libvirt.
2,下载libvirt1.1.2,解压缩,切换至libvirt1.1.2目录
下载libvirt压缩包网址:ftp://libvirt.org/libvirt/
3,如果你直接执行./configure,会提示你缺少很多包,所以先安装包:
apt-get install libxml++2.6-2 libxml++2.6-dev
apt-get install libdevmapper-dev
apt-get install libpciaccess-dev
apt-get install python-dev
apt-get install libnl-dev
4,安装完依赖包后,在当前目录下执行 ./configure--prefix=/usr
(其中--prefix选项为指定安装路径)。
执行成功,部分输出如下:
configure:Readline:no
configure:Python:yes
configure:DTrace:no
configure:numad:no
configure:XML Catalog:/etc/xml/catalog
configure:Init script:check
configure:Char device locks:/var/lock
configure:
configure:Privileges
configure:
configure:QEMU:root:root
configure:
5,编译:make
安装:makeinstall
至此libvirtd安装成功!
6,启动libvirt服务
service libvirt-bin start
万万要注意啦,libvirt-daemon是由libvirt-bin来启动的,而不是libvirtd,libvirt-bin是一个符号链接/etc/init.d/libvirt-bin- /lib/init/upstart-job,后者是一个shell脚本。
同样,停止libvirt服务就是service libvrit-bin stop;
以上操作的正确性仅限于在ubuntu上安装libvirt,重点是第1步和第6步,这和网上很多博文所讲的libvirt安装有些差异,比如很多没有第1步,第6步启动libvirt为service libvirtd
start,这会报错为libvirtd:unrecognizedservice.
第2,3,4,5步的下载、编译、安装在任何版本的Linux上都一致。
liunx UOS deepin安装Python3.8.5/3.9.0
<liunx UOS Deepin环境中安装Python 3.8.5和3.9.0的详细指南
在Linux UOS Deepin系统上安装Python 3.8.5和3.9.0版本,首先需要安装必要的编译组件,确保环境准备充分:更新包列表并安装基础编译工具:sudo apt update,接着安装`make`, `build-essential`, `libssl-dev`, `zlib1g-dev`, `liblzma-dev`, `libbz2-dev`, `libreadline-dev`, `libsqlite3-dev`, `llvm`, `libncurses5-dev`, `libncursesw5-dev`, `xz-utils`, 和 `tk-dev`。
接下来,下载Python的源文件包,进行编译和安装,具体步骤如下:基本编译命令
./configure:这是一个脚本,用于检测平台特征并生成Makefile,可根据需要添加参数,如指定安装路径。
make:执行编译操作,根据Makefile中的指令进行。
make install:执行安装,需要root权限,将编译好的Python安装到系统指定位置。
编译过程注意事项
可能遇到的错误,如缺少Makefile,需先运行`./configure`。
在遇到编译错误时,记录错误代码并分析可能的解决方案,如缺少依赖库。
安装过程扩展说明
Linux中,编译通常涉及`configure`生成Makefile,`make`编译,`make install`安装,以及`make clean`或`make distclean`清理临时文件。
`make all`生成可执行文件,`make clean`清除编译结果,`make distclean`清除配置文件和Makefile。
`make install`将程序安装到系统,`make dist`打包发布文件,`make distcheck`打包后进行完整编译和测试。
按照以上步骤,你可以顺利在Linux UOS Deepin的Deepin环境中安装Python 3.8.5和3.9.0版本。确保所有依赖已安装,编译和测试过程无误,你的Python环境即可投入使用。