裸机写代码(Windows.Linux环境搭建)

目录

1.工具/原料

2.配置环境变量

2.1开发环境Windows搭建

2.1.1概述

2.1.1.1. 系统环境变量

2.1.1.2. 用户环境变量

2.1.1.3.根据你的实际情况选择配置用户变量还是系统变量,

2.1.1.4.环境变量各个变量名的作用

2.1.1.5.具体配置实例:

2.1.1.6.验证配置效果

2.1.2安装

2.1.2.1.安装java环境

2.1.2.2.配置JDK的环境变量

2.1.2.3.安装Farris开发环境

2.1.2.3.1 安装Node.js

2.1.2.3.2 安装Jit-Engine

2.1.2.3.3 安装 ng(即@angular/cli,以下简称ng)

2.1.2.3.4安装数据库

2.1.2.4.综合检查项列表

2.2Linux开发环境搭建

2.2.1获取并安装依赖组件

2.2.2环境配置要求

2.2.3安装Java环境

2.2.4配置JDK的环境变量

2.2.5安装Farris开发环境

2.2.5.1 安装Node.js

2.2.5.2 安装Jit-Engine

2.2.5.3 安装ng(即@angular/cli,以下简称ng)

2.2.6安装数据库

2.2.7Redis安装

2.2.8Maven安装

2.2.9字体确认


1.工具/原料

2.配置环境变量

环境变量是什么呢?其实我们可以把它理解为【系统的视线范围】,没错,配置进入了环境变量的程序,就等于是进入了系统的视线范围,打开DOS命令窗口后输入程序名,系统就会把在其视线内的(环境变量内)的程序找出来,如果程序没有配置进入环境的变量的话,那系统自然就找不到。

2.1开发环境Windows搭建

2.1.1概述

环境变量说明:环境变量有两种类型。

2.1.1.1. 系统环境变量

系统环境变量,顾名思义,他是系统的。也就是说一旦配置了系统环境变量后,只要是使用这个操作系统的人,不管任何用户(一个操作系统一般可以设置多个用户)都能通过这个环境变量直接在doc命令窗口直接找到相应程序

2.1.1.2. 用户环境变量

用户环境变量,顾名思义,他是独属于某个用户的,一般那个用户配置的它,它就是那个用户的。也只有配置这个环境变量的用户才能使用它

环境变量是什么?如何配置环境变量

打开环境变量配置窗口

方式一:此电脑--》属性--》左上侧的高级系统设置--》高级---》环境变量

方式二:点击系统左下角的搜索--》输入"环境"两个字--》"编辑系统环境变量"

如图:

(我的系统是win10,所以我的这个截图是win10上的,但是win7,win8,我都使用了 很长时间,也都配置过很多次,所以实际上win7,8,10配置环境变量时都差不多,差异极小,win7,8配置环境变量时,环境变量字符串就在一行,而win10是一个列表,很明显方便很多)

环境变量是什么?如何配置环境变量

环境变量是什么?如何配置环境变量

2.1.1.3.根据你的实际情况选择配置用户变量还是系统变量,

为了安全一般配置用户环境变量。

为了省事一般配置系统环境变量。

如下图

环境变量是什么?如何配置环境变量

2.1.1.4.环境变量各个变量名的作用

打开环境变量配置窗口,我们可以看到环境变量有几个环境变量,如下:

PATH

TEM

TEMP

 ........

这里每个变量名都有其独特的含义与作用,想知道每个环境变量的含有的话,直接【百度百科:环境变量】会给出每个环境变量名的具体作用。

而在这里,我们关注的主要是path这个环境变量

path 表示:指定可执行文件的搜索路径。

实际上我们用的最多的也是这个变量,在我们安装各种软件,搭建各种开发环境时,一般也都是直接在这个path里面放入配置程序路径的

环境变量是什么?如何配置环境变量

2.1.1.5.具体配置实例:

我刚刚下载了nodejs的zip压缩包,现在我要使用node的话,就只能找到node.exe直接打开它进行使用,这样很不方便,于是我们可以node.exe配置进入到环境变量中,这样在系统的任何地方我们都能使用。

配置过程:

1. 找到node.exe路径,并复制这个路径(记得不要把node.exe也复制进去了哦,我们并不需要他)

2. 选择是配置系统环境变量还是用户环境变量

3. 将路径复制进入到path中,如下

注意:在配置环境变量时,将程序路径复制进去后,如果你的win7,8系统,那么请在路径的最后面加上一个分号,若果是win10那倒是不需要。

环境变量是什么?如何配置环境变量

环境变量是什么?如何配置环境变量

2.1.1.6.验证配置效果

在没有配置node的环境变量前,我就只能在其node.exe所在目录下使用node,但是配置成功后我就可以在任何地方使用他了。现在我在c盘下直接使用node命令查看效果,如下图所示:

环境变量是什么?如何配置环境变量

2.1.2安装

2.1.2.1.安装java环境

通常我们使用HotSpot版本的JVM,注意版本选择OpenJDK 8 (LTS)。AdoptOpenJDK提供了Docker、Windows、Linux、macOS等各种平台上的编译版本,可以根据需要选择下载。

这里无需选择Installer,只需.zip格式的绿色安装包即可。下载后的JDK无需安装,解压缩到本机任意目录即可。

2.1.2.2.配置JDK的环境变量

新建JAVA_HOME,配置解压路径

验证方式:win+r打开运行页面,输入CMD启动命令行工具,执行: java -version 能够正常输出版本。

JDK配置

在startup.cmd中可以修改默认JDK配置,不适用inBuilder安装盘中自带JDK,使用本地环境安装的JDK。如果已经配置了系统的环境中变量JAVA_HOME,注释掉“set JAVA_HOME=%IGIX_SERVER_HOME%\runtime\java\%PROCESSER_ARCHITECTURE%-win”即可。
如果没有配置环境变量,需要按照JDK安装配置进行JDK的安装配置。

2.1.2.3.安装Farris开发环境
2.1.2.3.1 安装Node.js

使用Windows操作系统下的Node.js安装包(Nodejs下载地址:Node.js — 下载 Node.js® ) 直接安装,安装过程使用默认配置,
(1) 配置验证
操作命令:
node --version
npm --version

2.1.2.3.2 安装Jit-Engine

1、Jit-Engine在线安装
(1) 安装jit-Engine 全局包
操作命令:npm install -g @farris/jit-engine@1.3.200 --registry=https://registry.npmmirror.com
注意:如果要安装指定版本的jit,例如 1.3.200,那么执行npm install -g @farris/jit-engine@1.3.200

(2) 验证jit是否安装成功
操作命令:jit --version
如果可以得到当前jit版本号,那么可以确认jit安装成功。

2.1.2.3.3 安装 ng(即@angular/cli,以下简称ng)

2、ng 在线安装
(1) 安装ng 全局包
操作命令:npm install -g @angular/cli@7.3.9 --registry=https://registry.npmmirror.com

(2) 验证ng是否安装成功
操作命令: ng --version

2.1.2.3.4安装数据库

以下展示PostgreSQL安装过程,双击运行安装程序postgresql-10.4-1-windows-x64

选择安装目录,建议使用默认安装目录。

选择安装组件

选择数据存储目录

输入数据库管理员密码。账号为postgres,密码需要记住

确认端口号

选择地区

确认安装设置

准备安装

执行安装

安装完成

2.1.2.4.综合检查项列表

按照以上步骤即可完成IDE开发环境搭建, 如果不能正常使用可参照如下列表检查:

序号检查项验证方式解决方案
1安装JDK打开命令行,执行: java -version 能够正常输出版本;参考本文“安装Java环境”
2安装Node.js打开命令行,执行: node -v 能够正常输出版本;官网获取nodejs安装包 Node.js — Run JavaScript Everywhere
3部署全局npm包:将“安装盘\components\npm_cache\npm.zip”解压缩至“{系统安装盘}:\Users{当前用户}\AppData\Roaming\”目录将“安装盘\components\npm_cache\npm.zip”解压缩至“{系统安装盘}:\Users{当前用户}\AppData\Roaming\”目录
4部署开发环境依赖npm包:请将“安装盘\demo\workspace_demo\node_modules”文件夹解压至运行环境所在根目录下的workspace文件夹。请将“安装盘\demo\workspace_demo\node_modules”文件夹解压至运行环境所在根目录下的workspace文件夹。

2.2Linux开发环境搭建

2.2.1获取并安装依赖组件

序号组件版本下载地址
1JDKOpenJDK8(LTS)Latest Releases | Adoptium
2Node.jsNode 8.0+Node.js — 下载 Node.js®
3数据库PostgreSQL 10.0+PostgreSQL: Linux downloads (Red Hat family)
4Redisserver v=3.2.12+Install Redis on Linux | Docs
5Maven 包Maven 3.6.3+https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

2.2.2环境配置要求

版本核心内存磁盘bitCPU 类型
最低Linux(Ubuntu 22.04+、Deepin 20.9+)48G50Gx64x64
推荐Linux(Ubuntu 22.04+、Deepin 20.9+)832G200Gx64x64

2.2.3安装Java环境

JDK可以在本文提供的网址Latest Releases | Adoptium (或镜像网址:Index of /Adoptium/8/jdk/x64/linux/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror )上下载OpenJDK8的tar包。JDK8的版本要求大于8u221,获取JDK的tar包后,将其拷贝到服务器中自定义的安装目录(此处用/data目录示例),然后在服务器的安装目录中执行shell命令解压缩:
tar -xvf jdk-8u281-linux-x64.tar.gz(jdk-8u281-linux-x64.tar.gz为下载下来的安装包)

2.2.4配置JDK的环境变量

切换到jdk的安装目录
cd jdk1.8.0_281(jdk1.8.0_281为jdk解压后的目录)
 


首先,用pwd命令查看JDK目录的路径。然后,更改文件sudo vi /etc/profile ,打开文档后输入i进入编辑模式,在文件最后添加:
export JAVA_HOME=/data/jdk1.8.0_281(jdk的目录)
export PATH=$PATH:$JAVA_HOME/bin
添加完成后,点击 esc退出编辑模式,最后执行:wq保存并退出。
更改完成后,执行:
source /etc/profile
让更改生效。

验证方式:
执行: java -version能够正常输出版本。
 


执行:javac -version

2.2.5安装Farris开发环境

2.2.5.1 安装Node.js

获取方式:

  1. 切换至 /opt 目录
    cd /opt

  2. 在线获取:

    操作命令
    sudo wget https://npmmirror.com/mirrors/node/v16.19.1/node-v16.19.1-linux-x64.tar.xz

    解压缩安装包:
    sudo xz -d node-v16.19.1-linux-x64.tar.xz
    sudo tar -xvf node-v16.19.1-linux-x64.tar

  3. 配置全局Node.js链接
    建立关联:
    sudo ln -s /opt/node-v16.19.1-linux-x64/bin/node /usr/bin/
    sudo ln -s /opt/node-v16.19.1-linux-x64/bin/npm /usr/bin/
     


    如果出现文件已存在的错误,那么执行如下操作命令:
    sudo ln -s -i /opt/node-v16.19.1-linux-x64/bin/node /usr/bin/
    sudo ln -s -i /opt/node-v16.19.1-linux-x64/bin/npm /usr/bin/
    在提示是否替换:输入y,点击回车继续。

  4. 配置目录权限
    为/opt/node-v16.19.1-linux-x64 目录设置执行权限
    操作命令: sudo chmod -R 777 /opt/node-v16.19.1-linux-x64

  5. 配置验证
    执行node命令:
    node --version
    npm --version

注意:如果您使用的Linux发行版为Ubuntu、Deepin或其他系统源包含了nodejs,那么可以使用以下方式安装nodejs,下面以Ubuntu 20.04 LTS版本为例:

  1. 安装nodejs
    操作命令: sudo apt install nodejs
  2. 安装npm
    操作命令: sudo apt install npm
  3. 配置验证
    执行node命令:
    node --version
    npm --version
    注意:如果出现权限问题,请按照提示进行权限设置,权限设置命令:sudo chmod -R 777 对应目录地址 ,请注意将命令中的对应目录地址替换为实际地址。
2.2.5.2 安装Jit-Engine

1、Jit-Engine在线安装

(1) 为jit-Engine目录配置可执行权限
操作命令:sudo chmod -R 777 /opt/node-v16.19.1-linux-x64

(2) 安装jit-Engine 全局包
操作命令:npm install -g @farris/jit-engine@1.3.144 --registry=https://registry.npmmirror.com
注意:如果要安装指定版本的jit,例如 1.3.144,那么执行npm install -g @farris/jit-engine@1.3.144

(3) 将jit的执行命令链接至全局
操作命令:sudo ln -s -i /opt/node-v16.19.1-linux-x64/bin/jit /usr/bin/
在提示是否覆盖时,请输入y,然后回车继续。

(4) 验证jit是否安装成功
操作命令:jit --version
如果可以得到当前jit版本号,那么可以确认jit安装成功。

2.2.5.3 安装ng(即@angular/cli,以下简称ng)

1、ng 在线安装
(1) 为ng目录配置可执行权限
操作命令: sudo chmod -R 777 /opt/node-v16.19.1-linux-x64

(2) 安装ng 全局包
操作命令: npm install -g @angular/cli@7.3.9 --registry=https://registry.npmmirror.com

(3)建立ng连接,执行命令
sudo ln -s -i /opt/node-v16.19.1-linux-x64/lib/node_modules/@angular/cli/bin/ng /usr/bin/ng

(4) 验证ng是否安装成功
操作命令: ng --version
注意事项:以上为目录配置可执行权限,均配置为 /opt/node-v16.19.1-linux-x64,原因是jit及ng的安装目录在/opt/node-v16.19.1-linux-x64目录下,如果使用其他版本Nodejs或目录不同,请使用对应的目录层级。

2.2.6安装数据库

PostgreSQL可以参照官网 PostgreSQL: Downloads 进行安装
 


使用包安装时请根据自身系统选择合适的包源(Deepin可以选择Debian)。

数据库配置
数据库成功安装后需要重新配置数据库用户密码和访问权限。

  1. 修改 vi /etc/postgresql/11/main/postgresql.conf (/etc/postgresql/11为数据库安装路径)
    password_encryption = md5 非必须
    listen_addresses = ‘*’ 非必须(如果不限制访问地址可以修改此项)

  2. 修改 vi /etc/postgresql/11/main/pg_hba.conf(/etc/postgresql/11为数据库安装路径)

    先将所有来源连接的METHOD改成trust

     
      
    1. # TYPE DATABASE USER ADDRESS METHOD
    2. # "local" is for Unix domain socket connections only
    3. local all all trust
    4. # IPv4 local connections:
    5. host all all 127.0.0.1/32 trust
    6. # IPv6 local connections:
    7. host all all ::1/128 trust
  3. 重启服务:sudo systemctl restart postgresql

  4. 不需要密码就可以直接登陆数据库psql -H postgres -U postgres
    :如果执行psql -H postgres -U postgres报错,提示:对用户”postgres”的对等认证失败,请检查pg_hba.conf文件,可能是因为METHOD没有修改全导致的问题。例如:
     

    img.png


    登陆后更改postgres密码
    alter user postgres with password 'new password';修改完密码后退出postgres命令行\q

  5. 配置文件更改回去

     
      
    1. # TYPE DATABASE USER ADDRESS METHOD
    2. # "local" is for Unix domain socket connections only
    3. local all all md5
    4. # IPv4 local connections:
    5. host all all 127.0.0.1/32 md5
    6. # IPv6 local connections:
    7. host all all ::1/128 md5
  6. 重启服务后,可以用密码登陆。

2.2.7Redis安装

Redis可以参照官网 Install Redis on Linux | Docs 进行安装。

img.png


Deepin参考Ubuntu/Debian的安装方法。

1.修改sudo vi /etc/redis/redis.conf
(1)关闭保护模式,设置protected-mode no
 

img.png


(2)关闭bind ip地址,在bind前面加上一个#号即可

img.png

如果有多个bind,需要注释掉所有的 bind

(3)设置密码,设置 requirepass yourpassword
 

img.png


2.重启redis服务

2.2.8Maven安装

通过 https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz ,下载Maven的安装包,下载完成后将apache-maven-3.6.3-bin.tar.gz文件拷贝到Linux服务器上。

拷贝好maven安装包后,使用tar命令进行解压。tar -xvf apache-maven-3.6.3-bin.tar.gz
配置Maven环境变量,使用pwd命令查看maven安装目录的路径

img

sudo vi /etc/profile 在文件最后添加:

export MAVEN_HOME=/data/apache-maven-3.6.3 (MAVEN的安装目录)
export PATH=$PATH:$MAVEN_HOME/bin

更改完成后,执行:
source /etc/profile 让更改生效。
验证配置:
执行Maven命令:mvn –v

img

2.2.9字体确认

Linux系统需要确认是否安装FontConfig控件,使用fc-list命令进行查看。如果系统中没有该命令的话,我们需要先安装相关的软件包。
以openEuler、麒麟为例,使用如下命令进行安装:
yum install -y fontconfig mkfontscale

  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NVMe(Non-Volatile Memory Express)是一种高速、低延迟的存储器协议,旨在优化闪存或其他非易失性存储器的性能。以下是一个简单的NVMe裸机代码示例,可以用于初始化NVMe控制器和与NVMe设备通信: ``` #include <stdint.h> // NVMe寄存器地址 #define NVME_CAP 0x0 #define NVME_VS 0x8 #define NVME_INTMS 0x10 #define NVME_INTMC 0x18 #define NVME_CC 0x14 #define NVME_CSTS 0x1C #define NVME_ASQ 0x20 #define NVME_ACQ 0x28 // NVMe命令 #define NVME_ADMIN_GET_LOG_PAGE 0x02 #define NVME_ADMIN_IDENTIFY 0x06 #define NVME_IO_READ 0x02 #define NVME_IO_WRITE 0x01 // NVMe命令队列大小 #define QUEUE_SIZE 64 // NVMe命令结构体 typedef struct { uint32_t dword0; uint32_t dword1; uint32_t dword2; uint32_t dword3; uint32_t dword4; uint32_t dword5; uint32_t dword6; uint32_t dword7; } nvme_command_t; // NVMe队列头结构体 typedef struct { uint16_t qid; uint16_t sq_head; uint16_t sq_tail; uint16_t cq_head; uint16_t cq_tail; uint16_t phase; uint16_t reserved[3]; } nvme_queue_head_t; // NVMe控制器初始化 void nvme_init() { // 初始化NVMe寄存器 uint32_t* nvme = (uint32_t*)0x1000; nvme[NVME_CAP] = 0x80000000; nvme[NVME_VS] = 0x1010000; nvme[NVME_INTMS] = 0; nvme[NVME_INTMC] = 0; nvme[NVME_CC] = 0x1; while ((nvme[NVME_CSTS] & 0x1) != 0x1); // 初始化命令队列 nvme_queue_head_t* sq = (nvme_queue_head_t*)0x2000; nvme_queue_head_t* cq = (nvme_queue_head_t*)0x3000; for (int i = 0; i < QUEUE_SIZE; i++) { sq[i].qid = 0; sq[i].sq_head = i; sq[i].sq_tail = i; sq[i].cq_head = i; sq[i].cq_tail = i; sq[i].phase = 0; cq[i].qid = 0; cq[i].sq_head = i; cq[i].sq_tail = i; cq[i].cq_head = i; cq[i].cq_tail = i; cq[i].phase = 0; } nvme[NVME_ASQ] = 0x2000; nvme[NVME_ACQ] = 0x3000; } // 发送NVMe命令 void nvme_send_command(uint64_t lba, uint32_t count, uint8_t* buffer, uint8_t opcode) { nvme_queue_head_t* sq = (nvme_queue_head_t*)0x2000; nvme_queue_head_t* cq = (nvme_queue_head_t*)0x3000; // 选择空闲的命令队列项 int index = -1; for (int i = 0; i < QUEUE_SIZE; i++) { if (sq[i].phase == 0 && cq[i].phase == 0) { index = i; break; } } // 填充命令项 nvme_command_t* cmd = (nvme_command_t*)(0x4000 + 64 * index); cmd->dword0 = (count - 1) << 16 | opcode; cmd->dword1 = 0; cmd->dword2 = (uint32_t)lba; cmd->dword3 = (uint32_t)(lba >> 32); cmd->dword4 = (uint32_t)buffer; cmd->dword5 = (uint32_t)(buffer >> 32); cmd->dword6 = 0; cmd->dword7 = 0; // 发送命令 sq[index].phase = 1; uint32_t* nvme = (uint32_t*)0x1000; nvme[NVME_ASQ] = 0x2000 + index * 64; nvme[NVME_ACQ] = 0x3000 + index * 64; nvme[NVME_CC] |= 0x1; while ((nvme[NVME_CSTS] & 0x1) != 0x1); } // 接收NVMe命令完成 void nvme_poll_completion() { uint32_t* nvme = (uint32_t*)0x1000; if ((nvme[NVME_CSTS] & 0x2) != 0x2) { return; } nvme[NVME_CSTS] = 0x2; nvme_queue_head_t* cq = (nvme_queue_head_t*)0x3000; for (int i = 0; i < QUEUE_SIZE; i++) { if (cq[i].phase == 1) { cq[i].phase = 0; break; } } } // 读取NVMe设备 void nvme_read(uint64_t lba, uint32_t count, uint8_t* buffer) { nvme_send_command(lba, count, buffer, NVME_IO_READ); while (1) { nvme_poll_completion(); if (count == 0) { break; } lba++; buffer += 512; count--; } } // 入NVMe设备 void nvme_write(uint64_t lba, uint32_t count, uint8_t* buffer) { nvme_send_command(lba, count, buffer, NVME_IO_WRITE); while (1) { nvme_poll_completion(); if (count == 0) { break; } lba++; buffer += 512; count--; } } ``` 以上代码仅作为示例,实际应用中需要考虑更多因素,并进行适当修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值