`
haoningabc
  • 浏览: 1477777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

em-dosbox

阅读更多

基本知识:
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

分享到:
评论

相关推荐

    MS-DOS 5.0

    4.9 XMAEM.SYS and XMA2EM.SYS 5. Solving Problems with Windows 5.1 DOS Applications in Windows Enhanced Mode 5.2 EMM386.EXE Location 5.3 WINA20.386 File 5.4 Windows 3.0 Enhanced Debug Version ...

    eM-Plant 学习资料

    eM-Plant 仿真软件学习必不可少 很适合初学者用额

    EM-X游戏制作

    EM-X游戏制作是一款专为游戏开发者设计的软件,尤其适合初学者和小型团队,它提供了简单易用的工具集,让您可以快速制作出网络游戏。在本文中,我们将深入探讨EM-X游戏制作软件的核心功能、使用流程以及如何利用它来...

    EM-PLANT8.2安装说明

    EM-PLANT8.2安装说明 EM-PLANT8.2是一种功能强大且广泛应用于工业自动化和Process Control的软件工具。作为一种专业的安装指南,本文档旨在指导用户正确地安装和配置EM-PLANT8.2,以确保其正常运行。 知识点1:...

    EM-Plant详细教程

    EM-Plant是一款强大的工业模拟与优化软件,广泛应用于生产计划、调度和仿真。这个"EM-Plant详细教程"是专为学习者设计的中文指导资料,以PPT的形式呈现,内容简洁明了,便于理解和实践。 教程可能涵盖以下关键知识...

    eM-Plant学习资料和范例

    《eM-Plant学习资料与范例》 eM-Plant是一款由UGS Corp开发的高级制造模拟软件,主要用于帮助用户实现对工厂生产线的虚拟仿真和优化。它提供了丰富的功能,包括设施模拟、模型创建、材料流动分析等,旨在提升制造业...

    EM-X1.06游戏制作工具

    EM-X1.06游戏制作工具是一款专为2D网络游戏开发者设计的专业软件,它提供了全面的游戏制作解决方案,帮助用户从零开始构建自己的游戏世界。这款工具集成了多种功能,包括图形编辑、动画制作、场景布局、逻辑编程以及...

    eM-Plant 7.0系统模拟(简体中文)讲解

    **eM-Plant 7.0系统模拟简体中文版详解** eM-Plant是一款强大的工厂模拟软件,专为制造业设计,旨在帮助用户在实际生产前进行虚拟仿真,以优化流程、提高效率并减少潜在问题。7.0版本是该软件的最新迭代,提供了更...

    DOSee:DOSee是基于DOSBox的Web的MS-DOS仿真器

    看Web的MS-DOS模拟器。 DOSee是在Web上使用的仿真生态系统的前端。 基于文本的MS-DOS在1980年代的大部分时间里都是主要的个人计算机平台。 直到1990年代中期,才被Microsoft Windows取代。 通过仿真该平台,该时代的...

    Robcad_EM-Workplace_教程

    ### Robcad_EM-Workplace 教程知识点概览 #### 一、Robcad_EM-Workplace 软件介绍 Robcad_EM-Workplace 是一款由 Tecnomatix Technologies Inc. 开发的专业软件,用于制造业中的生产线规划与仿真。本教程主要针对 ...

    VOTOL-EM-V3 Software Debugging(CAN)-6.exe

    蓝德控制器调试程序,EM30-EM150专用程序,带CAN使能调试模式,可用于调试程序。调功率和限流。

    em-7.6.2.tar.gz

    《Linux软件包管理:em-7.6.2.tar.gz深度解析》 在Linux系统中,软件包的管理和安装是日常运维工作的重要组成部分。本文将深入探讨标题为"em-7.6.2.tar.gz"的Linux软件包,了解其特性和使用方法,以及如何在系统中...

    教程_eM-Plant_zip_PlantSimulation_plantSimulation_

    《Plant Simulation 学习教程——基于 eM-Plant 软件的物流仿真解析》 在工业生产和物流管理中,仿真技术已经成为优化流程、提升效率的重要工具。Plant Simulation 是 Siemens 提供的一款强大的离散事件仿真软件,...

    eM-Test Expert–Version 7.0.0.doc

    ### eM-Test Expert – Version 7.0.0 关键知识点详解 #### 一、产品简介 eM-Test Expert – Version 7.0.0 是一款专为原始设备制造商(OEMs)、合同电子制造商(CEMs)以及电子制造服务提供商(EMS providers)...

    eM-Plant 一些技巧

    eM-Plant 技巧大全 eM-Plant 是一款强大的仿真软件,旨在帮助用户快速构建和模拟复杂的生产系统。为了帮助用户更好地使用 eM-Plant,以下是关于 eM-Plant 的一些技巧和方法。 1. 统计数据收集技巧 在 eM-Plant 中...

    EM-GMM-matlab-master_GMM-EM_GMM_EM_gmm分类_

    总结,"EM-GMM-matlab-master"项目是一个关于使用EM算法和GMM进行分类的实例,旨在展示如何在Matlab环境中处理这类问题。通过理解和应用这些知识,开发者可以解决更复杂的数据分析任务,比如语音识别、图像分类和...

    AM68-2-80-EM-P 交流内置柔性静音开合帘电机.doc

    【AM68-2-80-EM-P 交流内置柔性静音开合帘电机】是一款专为大型窗帘设计的高端电动开合装置,适用于酒店、会议厅、商务场所及现代家居装饰。这款电机以其精致的工艺和静音设计赢得了市场的青睐。其核心特点是采用...

    eM-Plant培训讲义

    《eM-Plant培训讲义》 eM-Plant是一款由Tecnomatix公司开发的先进工厂模拟和布局设计软件。它广泛应用于制造业、物流和工程领域,为用户提供了一个强大的平台来创建、分析和优化复杂的生产流程。通过这次培训讲义,...

Global site tag (gtag.js) - Google Analytics