基本知识:
1.emscripten gcc8.2
2.参考:
https://blog.csdn.net/martinking1997/article/details/82460849
3.修改过的 https://github.com/killinux/em-dosbox
########## error:
emcc 报错
version `GLIBCXX_3.4.21' not found
strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX
检查C_INCLUDE_PATH and LD_LIBRARY_PATH and PATH
是因为gcc版本太低了,需要gcc8.0
############需要emscripten
https://haoningabc.iteye.com/admin/blogs/2411956
######################## 如果有ssl错误:
Error: Downloading URL 'https://storage.googleapis.com/webassembly/emscripten-releases-builds/mac/b024b71038d1291ed7ec23ecd553bf2c0c8d6da6/wasm-binaries.tbz2': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>
Warning: Possibly SSL/TLS issue. Update or install Python SSL root certificates (2048-bit or greater) supplied in Python folder or https://pypi.org/project/certifi/ and try again.
Installation failed!
vim emsdk.py
加入
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
######################### 错误 expected unqualified-id
make em-dosbox的时候会报错
这个在mac下没解决。。。。。 2019年12月5日解决
大量error:
version:1:1: error: expected unqualified-id
参考
https://github.com/nmap/nmap/issues/1586
/usr/local/Cellar/emscripten/1.38.44/libexec/system/include/libcxx/cstddef
/usr/local/Cellar/emscripten/1.38.44/libexec/system/include/libcxx/type_traits
<version> to "version"
这样要改n个文件,不可取
搜索VERSION em-dosbox官方有个VERSION文件和emcc要用的<version>冲突了
把em-dosbox根目录的VERSION 删掉就好了
########### redhat8 上安装没有 libgcc的问题
export LANGUAGE="en_US.UTF-8"
export LANG=en_US:zh_CN.UTF-8
export LC_ALL=C
yum install autoconf automake cmake -y
yum install python3 -y
ln -s /usr/bin/python3 /usr/bin/python
注意需要用cmake3 卸载cmake2
###########
centos 7 完整实验:
因为emcc需要的libstdc++.so 要比较高的版本,默认的4.8不行,
先装gcc8.2,
设置 LD_LIBRARY_PATH
再使用emsdk
参考:
https://blog.csdn.net/martinking1997/article/details/82460849
不用https://blog.cles.jp/item/9428
gcc 要用8
下载:
http://ftp.gnu.org/gnu/gcc/gcc-8.2.0/
需要cmake3
必要包的安装:
yum install -y epel-release
yum install -y cmake3 nodejs npm java-1.8.0-openjdk java-1.8.0-openjdk-devel git
ln -s /usr/bin/cmake3 /usr/local/bin/cmake
yum install autoconf automake -y
yum install -y gmp gmp-devel mpfr mpfr-devel libmpc libmpc-devel
yum install zlib zlib-devel pcre pcre-devel -y
yum install gcc-c++ glibc-headers -y
yum remove gcc
这样容易看出gcc的错误
安装gcc8.2:
./configure --with-system-zlib --disable-multilib --enable-languages=c,c++,fortran --prefix=/usr/local/gcc8
make -j4
make install
检查
strings /usr/local/gcc8/lib64/libstdc++.so|grep GLIBCXX
export LD_LIBRARY_PATH=/usr/local/gcc8/lib64:$LD_LIBRARY_PATH
先删除本机的gcc方便调试
yum remove gcc
安装em-dosbox
后设置环境变量:
export GCC_HOME=/usr/local/gcc8
export PATH=$GCC_HOME/bin:$PATH
export MANPATH=$GCC_HOME/share/man
export CPATH=$GCC_HOME/include
export C_INCLUDE_DIRS=$GCC_HOME/include
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64
export LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64
安装参考:
http://www.ruanyifeng.com/blog/2017/09/asmjs_emscripten.html
https://blog.csdn.net/martinking1997/article/details/82460849
这个最重要
安装emscripten:
git clone https://github.com/juj/emsdk.git
cd emsdk
./emsdk install --build=Release sdk-incoming-64bit binaryen-master-64bit
./emsdk activate --build=Release sdk-incoming-64bit binaryen-master-64bit
source ./emsdk_env.sh --build=Release
##########在安装clang的时候
The CXX compiler identification is unknown
需要在 emsdk/clang/fastcomp/src
里面加
set(CMAKE_C_COMPILER "/usr/local/gcc8/bin/gcc")
set(CMAKE_CXX_COMPILER "/usr/local/gcc8/bin/g++")
删除emsdk/clang/fastcomp 编译过的clang目录,因为cmake CACHE PATH的时候 ,里面有CMakeCache.txt错误会保留,
重新
./emsdk activate --build=Release sdk-incoming-64bit binaryen-master-64bit
/opt/mt/emsdk/emscripten/incoming/tools/optimizer/CMakeLists.txt
的cc也找不到
set(CMAKE_C_COMPILER "/usr/local/gcc8/bin/gcc")
set(CMAKE_CXX_COMPILER "/usr/local/gcc8/bin/g++")
删掉incoming上一层 的编译的目录
重新
/opt/mt/emsdk/binaryen/master/CMakeLists.txt
加入
set(CMAKE_C_COMPILER "/usr/local/gcc8/bin/gcc")
set(CMAKE_CXX_COMPILER "/usr/local/gcc8/bin/g++")
删掉master上一层 的编译的目录
重新
##############################
测试hello.c
#include <stdio.h>
int main( )
{
printf("Hello World!\n");
}
emcc hello.c
node a.out.js
安装em-dosbox:
git clone https://github.com/killinux/em-dosbox
cd em-dosbox
./autogen.sh
emconfigure ./configure --prefix=/usr/local/em-dosbox --enable-wasm
make -j4
注意一定要有 --enable-wasm
运行打包exe的时候如果出现
TypeError: Module.addRunDependency is not a function
是因为没有FORCE_FILESYSTEM=1
编译前
需要修改
vim src/makefile.am
this change is necessary for file-system access. Otherwise the games do not start.
changed in "src/makefile.am"
line21(new):
dosbox_LDFLAGS=-s TOTAL_MEMORY=134217728 -s ALLOW_MEMORY_GROWTH=0 -s FORCE_FILESYSTEM=1
line32(new):
dosbox_LDFLAGS+=-s WASM=1 -s 'BINARYEN_TRAP_MODE="clamp"'
taken from:
https://medium.com/@bartoszpolnik/emulating-deluxe-ski-jump-2-with-dosbox-and-wasm-88f24f5a4aaf
再make -j4
############# mac 下:
参考https://csl.name/post/em-dosbox/
直接
brew install SDL2 SDL2_image emscripten
brew install binaryen
~/.emscripten
检查一下,需要类似如下:
LLVM_ROOT = "/usr/local/opt/emscripten/libexec/llvm/bin"
NODE_JS = "/usr/local/bin/node"
EMSCRIPTEN_ROOT = "/usr/local/Cellar/emscripten/1.38.44/libexec"
BINARYEN_ROOT = "/usr/local/opt/binaryen"
COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]
emcc不报错
emcc hello.c
cd em-dosbox
emconfigure ./configure --prefix=/usr/local/em-dosbox --enable-wasm
make -j4
mac 已经解决,注意VERSION问题,如果报错,就删掉em-dosbox/VERSION
这个文件和编译时,系统需要的<version>冲突了
python3 -m http.server 9999
################# 普通 dosbox 的基本使用
dosbox:
mount c ~/mydos
ctrl +f10 退出
去百度盘下载 masm工具,放到 ~/mydos下
mt下面有tools.rar
dosbox的helloworld:
https://www.cnblogs.com/flipped/p/7683656.html
hello.asm
STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
BUF DB 'Hello world!$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
masm hello
生成hello.obj
link hello
生成hello.exe
########## 在em-dosbox中运行这个exe
#./packager.py gwbasic gwbasic.exe
./packager.py hello HELLO.EXE
会生成hello.html
如果遇到问题看这个https://github.com/dreamlayers/em-dosbox/issues/49
需要configure的时候--enable-wasm 和 src/Makefile.am 中 设置 -s FORCE_FILESYSTEM=1
python -m SimpleHTTPServer 8000
访问hello.html即可
https://www.helplib.com/GitHub/article_98874
###########
jsdos:
https://js-dos.com/getting-started/
https://dos.zczc.cz/games/%E8%B6%85%E6%97%B6%E7%A9%BAG%E7%82%B9/
https://github.com/killinux/emularity
原来的github上的dosbox-sync.js dosbox-sync.mem没有了,去doc.zczc.cz上找到的这俩文件
################# 使用DosBox运行dos游戏的简易方法
http://blog.lujun9972.win/blog/2017/11/01/%E4%BD%BF%E7%94%A8dosbox%E8%BF%90%E8%A1%8Cdos%E6%B8%B8%E6%88%8F%E7%9A%84%E7%AE%80%E6%98%93%E6%96%B9%E6%B3%95/index.html
cp cskgd.zip ~/mydos
unzip cskgd.zip
/Applications/dosbox.app/Contents/MacOS
./DOSBox
mount c ~/mydos
c:
cd cskgd
qr
问题:
已经有的exe 怎么用em-dosbox运行
已经解决
package.py hello HELLO.EXE
注意原版的em-dosbox需要打个补丁https://github.com/dreamlayers/em-dosbox/issues/49
################ emscripten的文件系统
https://segmentfault.com/a/1190000011228779
https://github.com/zephyrproject-rtos/zephyr/pull/348
brew install gettext qemu help2man mpfr gmp coreutils wget python3 dfu-util dtc
分享到:
相关推荐
看Web的MS-DOS模拟器。 DOSee是在Web上使用的仿真生态系统的前端。 基于文本的MS-DOS在1980年代的大部分时间里都是主要的个人计算机平台。 直到1990年代中期,才被Microsoft Windows取代。 通过仿真该平台,该时代的...
The Auditory Toolbox (Malcolm Slaney) and VOICEBOX (Mike Brooks) which are both written in Matlab can be used for feature extraction and SAD purposes. The main component of every speaker recognition...
圣保罗ELESö双曲盒,CometsArcadeNeon EO Hypertocera,Sendo的assim,JA deixo褐托多斯奥斯圣托devidoscréditosAOS criadores originais DOS 3 temasëaproveito第agradecer一个蟒vontade EM电脑桌面壁纸电脑桌面...
内容概要:本文详细介绍了基于.NET5开发的一个仓储管理系统,涵盖了多个关键技术的应用。首先,在数据访问方面,使用了EF Core进行ORM操作,并引入了全局逻辑删除和多租户过滤等功能。其次,权限管理部分采用Policy机制实现动态按钮权限控制,权限数据存储于Redis中,确保高效响应。再次,消息队列方面,通过RabbitMQ实现库存变动后的异步通知,保障库存数据的一致性和可靠性。此外,系统还支持多租户模式,能够根据不同租户的需求灵活切换数据库连接。前端则选择了LayUI作为主要框架,配合WebSocket实现库存变化的实时推送。部署环节涉及Ocelot网关、Consul服务注册以及Docker容器化部署,确保系统的高可用性和扩展性。 适合人群:具有一定.NET开发经验的研发人员和技术爱好者。 使用场景及目标:适用于希望深入了解.NET5企业级应用开发的技术人员,尤其是对仓储管理系统感兴趣的人群。通过学习本文,读者可以掌握如何将多种现代技术集成到一个完整的解决方案中,从而提高开发效率和系统性能。 其他说明:文中提供了大量实际代码片段,帮助读者更好地理解和实践相关技术。同时,作者分享了许
内容概要:本文档是中国联通发布的关于自智网络技术白皮书,详细介绍了云光和云网专线场景下的自智网络技术。主要内容涵盖行业洞察、中国联通专线自智网络概述、云光和云网专线自智网络的技术特征、分级标准及其关键技术,以及专线自智网络的分级测评和认证体系。文中强调了自智网络在提升网络智能化、自动化方面的关键作用,特别是在云光和云网专线场景的应用,旨在为行业客户提供高品质的专线服务,促进网络向融合化、智能化、绿色化发展。 适合人群:适用于通信行业的技术人员、研究人员、管理人员,尤其是关注自智网络技术及其应用的专业人士。 使用场景及目标:①帮助行业客户理解自智网络技术在云光和云网专线场景中的应用;②为运营商提供技术参考,提升网络智能化水平;③促进产业链上下游协同发展,推动自智网络的商业化应用。 其他说明:本文档不仅提供了详细的理论和技术解析,还结合了中国联通的实际案例,展示了自智网络在实际应用中的成效和发展前景。
内容概要:本文详细介绍了三菱Q系列PLC在液晶电视导光板加工中的应用案例。主要内容涵盖Q系列PLC的使用、QD75MH定位模块和SSNET总线伺服的应用、伺服控制、触摸屏程序设计以及温控器的使用。文中不仅提供了详细的硬件配置和软件编程实例,还深入解析了各个组件的工作原理及其协同工作的机制。此外,文章还分享了一些实际操作中的经验和常见问题解决方案,如伺服控制中的加减速曲线优化、温控器的Modbus通讯调试、以及总线通讯中的丢包问题处理等。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对三菱Q系列PLC和伺服控制系统感兴趣的读者。 使用场景及目标:适用于液晶电视导光板加工生产线的设计、安装、调试和维护。目标是帮助技术人员理解和掌握三菱Q系列PLC及相关组件的应用,提升系统的稳定性和精度。 其他说明:文章通过具体的代码示例和实际操作经验,展示了如何利用三菱Q系列PLC实现高效、稳定的工业自动化控制。对于希望深入了解工业自动化控制技术和三菱PLC编程的读者来说,是一份非常有价值的参考资料。
# 基于Go语言的用户积分系统 PointSystem ## 项目简介 本项目是一个基于Go语言的用户积分系统,旨在实现常见的用户积分功能,包括积分的获取、扣除和查询等。该系统适用于各种需要用户积分的场景,如购物网站、社区论坛等。 ## 项目的主要特性和功能 1. 用户积分管理系统能够记录用户的积分变化,包括增加积分和减少积分。 2. 积分查询用户可以查询自己的总积分。 3. 积分明细查询用户可以查询自己的积分变化明细,包括积分增加和扣除的记录。 4. 日志记录系统能够记录操作日志,方便问题追踪和审计。 ## 安装使用步骤 1. 确保已安装Go语言环境,并设置好环境变量。 2. 下载项目的源代码文件,解压到本地目录。 3. 在项目根目录下,找到并打开文件 confconf.go,根据实际需求修改数据库连接配置信息(mysqlHost、mysqlUsername、mysqlPassword、mysqlDb 和 LogPath)。
# 基于Arduino的SIMONTRONI游戏 ## 项目简介 SIMONTRONI是一个基于Arduino的交互式记忆游戏。玩家需要记住并重复由LED灯显示的随机序列。随着游戏的进行,序列的长度会逐渐增加,挑战玩家的记忆能力。该项目还包括一个音量调节功能,通过旋钮调节游戏音量。 ## 项目的主要特性和功能 1. 记忆挑战玩家需要记住并重复LED灯显示的序列。 2. 多级游戏随着游戏的进行,序列的长度会逐渐增加,增加游戏的难度。 3. 音量调节通过旋钮调节游戏音量,满足不同玩家的需求。 4. 硬件交互使用Arduino Uno、LED灯、按钮和电阻等硬件组件,实现游戏的物理交互。 ## 安装使用步骤 1. 准备硬件 1个Arduino Uno 4个LED灯 4个按钮 1个蜂鸣器 1个5k电位器 若干电阻(220和330) 1个面包板和若干导线 2. 下载代码
1、文件说明: Centos8操作系统sqlite-devel-3.26.0-15.el8.rpm以及相关依赖,全打包为一个tar.gz压缩包 2、安装指令: #Step1、解压 tar -zxvf sqlite-devel-3.26.0-15.el8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm
# 基于Python的迷宫探索强化学习项目 ## 项目简介 本项目是一个基于强化学习算法的迷宫探索任务。它使用Python编程语言和多种强化学习算法(如QLearning、Sarsa、Sarsa Lambda等)来训练智能体,使其在随机变化的迷宫环境中找到最短路径到达目标点。 ## 项目的主要特性和功能 1. 迷宫环境模拟项目使用CSV文件定义迷宫地图,模拟二维迷宫环境,包括障碍物、悬崖和终点等。 2. 强化学习算法实现实现了QLearning、Sarsa、Sarsa Lambda等强化学习算法,用于智能体的决策过程。 3. 奖励函数设计设计了多种奖励函数,包括距离奖励、危险区域惩罚、防止终点区域“守株待兔”现象和重复路径惩罚等,以引导智能体更好地探索迷宫。 4. 经验回放策略采用了经验回放策略,以提高数据利用效率并稳定学习过程。 5. 可视化界面提供了基于pygame库的可视化界面,用于展示迷宫的布局、智能体的移动和奖励曲线等。
Java项目课程设计,包含源码+数据库+论文
# 基于Vue框架的商家管理系统 ## 项目简介 本项目是一个基于Vue框架开发的前端项目,主要实现了商家展示、搜索、购物车管理、用户评价等功能。通过本项目的学习和实践,可以深入理解Vue框架的核心思想和相关技术要点,包括组件化开发、异步数据处理、动态数据展示等。 ## 项目的主要特性和功能 1. 异步数据处理通过Vuex管理应用状态,实现前后端数据交互和异步数据处理。包括登录注册功能、商家信息的展示和搜索功能等。 2. 组件化开发项目采用组件化开发模式,将页面拆分成多个独立组件,提高代码复用性和可维护性。 3. 动态数据展示利用Vue的响应式机制,实现动态数据展示,包括轮播图、商家列表等。 4. 交互体验优化通过使用betterscroll插件实现页面的滑动效果,提升用户体验。同时,使用vuelazyload插件实现图片懒加载,优化页面加载速度。 ## 安装使用步骤 2. 安装依赖在项目根目录下运行npm install命令,安装项目所需依赖。
内容概要:本文介绍了TeslaModbusSCADA安卓组态软件的功能特点及其应用场景。该软件通过Wi-Fi和Modbus协议实现了对工业生产设备和农业设施的数据采集与控制。其主要优点包括全中文界面、简易组态、丰富的控件库、无数据点限制以及良好的通信稳定性。文中详细展示了如何快速搭建监控界面,并通过多个实例说明了其在实际项目中的应用效果。 适用人群:适用于工农业生产、物联网控制领域的工程师和技术爱好者,尤其是希望简化数据采集和设备控制流程的用户。 使用场景及目标:①用于构建工业生产线上设备的状态监测与控制系统;②应用于农业大棚、养殖厂等场所的环境参数监控;③提供灵活易用的界面设计工具,降低开发门槛,提高工作效率。 其他说明:尽管存在一些局限性(如暂时不支持OPC UA协议),但未来版本计划增加更多功能,进一步拓展其应用范围。
JAVA编写的socket服务,可以实现以多种方式的通信 接收socket客户端服务端发送的信息,发送给socket 服务端客户的顶端信息
docker
内容概要:本文详细探讨了国产AI大模型DeepSeek的技术水平及其在全球范围内的影响力。首先介绍了DeepSeek的技术背景与核心优势,强调其在自然语言处理、计算机视觉、强化学习和多模态融合等方面的表现。其次,解析了DeepSeek的核心技术,包括自然语言处理、计算机视觉、强化学习和多模态融合的具体应用。接着,阐述了DeepSeek的架构设计与性能优化措施,展示了其在电商、医疗、教育等多个领域的实际应用案例。最后,展望了DeepSeek的未来发展趋势,如多模态融合、实时视频分析、三维视觉与增强现实、模型轻量化、联邦学习以及AI伦理与可持续发展。 适合人群:对人工智能技术感兴趣的科研人员、工程师、产品经理和技术爱好者。 使用场景及目标:适用于希望深入了解国产AI大模型技术水平及其应用前景的人士,目标是掌握DeepSeek的技术特点、应用场景和发展方向。 其他说明:本文不仅介绍了DeepSeek的技术优势,还通过具体案例展示了其在不同行业中的实际应用效果,有助于读者全面了解DeepSeek的潜力和价值。
# 基于 Vue 3 + Vite 和 TensorFlow 的视力测试图形识别游戏系统 ## 项目简介 本项目是一个集图像识别与游戏化视力测试为一体的系统。借助 Vue 3 + Vite 搭建项目框架,运用 TensorFlow 完成图像识别功能,同时利用 PIXI 框架绘制 2D 游戏界面。用户在游戏过程中,通过对特定字母图像的识别来进行视力测试。 ## 项目的主要特性和功能 1. 前端框架采用 Vue 3 + Vite 搭建,具备高效的模块打包和快速的服务器启动能力,确保开发和使用的流畅性。 2. 图像识别借助 TensorFlow 的算法模型,实现精确的图像识别功能,为游戏的准确性提供保障。 3. 游戏绘制使用 PIXI 2D canvas 框架绘制游戏界面,包含多个界面布局,如开始界面、介绍界面和主界面,且对界面元素进行了封装,方便维护和复用。
# 基于Vue框架的后台管理模板 ## 项目简介 本项目是一个基于Vue框架的后台管理模板,精简版是从优秀的vuepureadmin项目中提炼出的主体功能,更适合实际项目开发。该项目拥有高效的代码结构、丰富的功能组件和友好的用户体验设计。通过全局引入elementplus,打包后的文件大小仍然低于2.3MB,并且通过brotli压缩和cdn替换本地库模式,打包大小可进一步降低到低于350KB。项目还提供了官方快速开发文档,方便开发者快速上手和使用。 ## 项目的主要特性和功能 1. 环境要求项目需要node版本不小于16,pnpm版本不小于6。为优化npm包管理工具的兼容性,该项目推荐使用pnpm作为包管理工具。 2. Vue版本项目推荐使用Vue3.3 Composition API进行组件开发,更加符合现代前端开发趋势。
# 基于Python的微信智能聊天机器人 ## 项目简介 本项目是一个基于Python的微信智能聊天机器人,旨在通过ChatGPT的强大对话和信息整合能力,将微信打造成一个智能机器人。它支持多端部署,包括个人微信、微信公众号和企业微信应用,能够进行智能对话、语音识别、图片生成等多种功能,并且支持丰富的插件扩展。 ## 主要特性和功能 多端部署支持个人微信、微信公众号和企业微信应用等多种部署方式。 智能对话支持私聊及群聊的消息智能回复,支持多轮会话上下文记忆,支持GPT3、GPT3.5、GPT4模型。 语音识别可识别语音消息,通过文字或语音回复,支持Azure、Baidu、Google、OpenAI等多种语音模型。 图片生成支持图片生成和图生图(如照片修复),可选择DellE、Stable Diffusion、Replicate模型。 丰富插件支持个性化插件扩展,已实现多角色切换、文字冒险、敏感词过滤、聊天记录总结等插件。
内容概要:本文详细介绍了基于B/S架构,采用PHP、CSS、JavaScript和MySQL技术栈构建的图书馆管理系统。首先阐述了系统的架构和技术亮点,如B/S架构的优势、PHP的灵活性、CSS的美化能力以及JavaScript的交互性和MySQL的数据管理功能。接着具体展示了系统的功能模块,包括用户注册登录、管理员权限管理、图书管理、借还书操作等。文中还特别强调了安全性措施,如验证码机制、会话管理和密码哈希等。最后给出了项目的搭建方法和一些优化建议,如使用phpstudy和navicat工具,以及数据库性能优化等。 适合人群:具有一定编程基础的技术爱好者、Web开发者、图书馆管理人员。 使用场景及目标:适用于希望快速搭建并部署图书馆管理系统的个人或机构,旨在提高图书馆管理效率,同时提供一个完整的Web开发案例供学习和参考。 其他说明:文中提供的代码片段和搭建指南有助于理解和实践,同时也指出了一些潜在的安全隐患和改进方向,如避免SQL注入、使用预处理语句等。