使用 Emscripten 编译 GMP/MPFR

2023-12-24

好吧,这已经让我发疯了。我已经尝试了至少一个月,但互联网上的任何地方都没有帮助。

我按照以下步骤操作this https://github.com/kripken/gmp.js。当我执行这些步骤时,甚至这个示例也不起作用,因为当我这样做时,我得到了这个。

bitcode ==> javascript
warning: unresolved symbol: __gmpz_cmp
warning: unresolved symbol: __gmpz_mul_ui
warning: unresolved symbol: __gmpz_submul_ui
warning: unresolved symbol: __gmpz_init_set_ui
warning: unresolved symbol: __gmpz_mul_2exp
warning: unresolved symbol: __gmpz_init
warning: unresolved symbol: __gmpz_fdiv_qr
warning: unresolved symbol: __gmpz_add

当我运行生成的complete.js 文件时 -

missing function: __gmpz_init
-1
-1

/home/ubuntu/workspace/gmp.js/complete.js:117
      throw ex;
      ^
abort(-1) at Error
    at jsStackTrace (/home/ubuntu/workspace/gmp.js/complete.js:1045:13)
    at stackTrace (/home/ubuntu/workspace/gmp.js/complete.js:1062:22)
    at abort (/home/ubuntu/workspace/gmp.js/complete.js:6743:44)
    at ___gmpz_init (/home/ubuntu/workspace/gmp.js/complete.js:1744:56)
    at Object._main (/home/ubuntu/workspace/gmp.js/complete.js:4978:2)
    at Object.callMain (/home/ubuntu/workspace/gmp.js/complete.js:6627:30)
    at doRun (/home/ubuntu/workspace/gmp.js/complete.js:6681:60)
    at run (/home/ubuntu/workspace/gmp.js/complete.js:6695:5)
    at Object.<anonymous> (/home/ubuntu/workspace/gmp.js/complete.js:6769:1)
    at Module._compile (module.js:541:32)
If this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.

这些说明适用于运行 amd64 Debian Buster 的主机。 GMP 似乎不再需要 32 位来与 Emscripten 一起工作(无论如何,32 位 Emscripten 似乎不再受支持?),但我使用了 chroot 来保持干净的环境。安装后,我的 chroot 有 1.6GB 大。但如果可以避免的话,我不建议将它用于计算密集型代码,在一项基准测试中,我的本机代码比在 Nodejs 中运行的使用 Emscripten 编译的相同代码快 15 倍...

Debian Buster chroot

mkdir emscripten
sudo debootstrap buster emscripten
sudo chroot emscripten /bin/bash
echo "deb http://security.debian.org/debian-security buster/updates main" >> /etc/apt/sources.list
apt update
apt install python cmake g++ git lzip wget nodejs m4
echo "none /dev/shm tmpfs rw,nosuid,nodev,noexec 0 0" >> /etc/fstab
mount /dev/shm
echo "none /proc proc defaults 0 0" >> /etc/fstab
mount /proc
adduser emscripten
su - emscripten

最新emsdk

在撰写本文时已安装releases-upstream-b024b71038d1291ed7ec23ecd553bf2c0c8d6da6-64bit and node-12.9.1-64bit:

git clone https://github.com/juj/emsdk.git
cd emsdk
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
mkdir -p ${HOME}/opt/src
cd ${HOME}/opt/src

GMP 6.1.2

wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz
tar xf gmp-6.1.2.tar.lz
cd gmp-6.1.2
emconfigure ./configure --disable-assembly --host none --enable-cxx --prefix=${HOME}/opt
make
make install
cd ..

MPFR 4.0.2

wget https://www.mpfr.org/mpfr-current/mpfr-4.0.2.tar.xz
wget https://www.mpfr.org/mpfr-current/allpatches
tar xf mpfr-4.0.2.tar.xz
cd mpfr-4.0.2
patch -N -Z -p1 < ../allpatches 
emconfigure ./configure --host none --prefix=${HOME}/opt --with-gmp=${HOME}/opt
make
make install
cd ..

MPC 1.1.0

wget https://ftp.gnu.org/gnu/mpc/mpc-1.1.0.tar.gz
tar xf mpc-1.1.0.tar.gz
cd mpc-1.1.0
emconfigure ./configure --host none --prefix=${HOME}/opt --with-gmp=${HOME}/opt --with-mpfr=${HOME}/opt
make
make install
cd ..

你好世界

您最喜欢的使用 GMP/MPFR/MPC 的程序:

emcc -o hello.js hello.c \
  ${HOME}/opt/lib/libmpc.a ${HOME}/opt/lib/libmpfr.a ${HOME}/opt/lib/libgmp.a
nodejs hello.js
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Emscripten 编译 GMP/MPFR 的相关文章

  • 在具有子项的“contenteditable”div 中设置插入符位置

    我有一个这样的 HTML 结构 div This is some plain boring content div 我还有这个函数 允许我将插入符位置设置到 div 中我想要的任何位置 Move caret to a specific po
  • 在 onclick 事件上请求麦克风

    有一天 我偶然发现了这个 Javascript 录音机的例子 http webaudiodemos appspot com AudioRecorder index html http webaudiodemos appspot com Au
  • 如何在javascript中动态向对象数组添加值?

    这是一个对象数组 var data label 1 value 12 label 1 value 12 label 1 value 12 label 1 value 12 我如何动态地为这些添加值 我尝试了以下代码但没有成功 var lab
  • 如何检查是否存在可能的路径?

    我正在开发一个基于 javascript 的实验性游戏 玩家必须在二维平铺地图上移动才能退出 请随意检查这个小提琴并演奏 http jsfiddle net moonlife 74vLd 我只是随机放置障碍物 但有时障碍物会挡住玩家和出口之
  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • 在 JavaScript 函数中加载图像

    我有获取图像像素颜色的功能 function getImage imgsrc var img img src imgsrc var imageMap new Object img load function var canvas
  • HTML 和 标签有什么区别?

    HEAD 标签和 BODY 标签有什么区别 大多数 HTML 书籍仅 简短 提及 and 标签 但它们消失得很快 它们会影响浏览器呈现网页的方式吗 另外 它们会影响 javascript 的运行顺序吗 我的意思是 如果我里面有一个javas
  • 如何在 mongodb 聚合管道中使用 Javascript 对象?

    我有一个 JS 对象norm我想在 mongo 聚合管道中使用它 如下所示 var norm 1 1 2 1 16 3 1 413 4 1 622 5 1 6 6 1 753 7 3 001 8 2 818 9 3 291 10 2 824
  • 在自动完成上添加 jQuery 延迟

    我正在尝试为应用程序创建 jQuery 自动完成 search input on keyup function search this val autocomplete div autocomplete get ajax search se
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • 嵌套 DIV 的类似斑马的 CSS 样式

    我嵌套了 DIV 元素 但我不知道嵌套的级别 我需要每个都有与其父级不同的背景 创建类似斑马的颜色 我只使用两种背景 深色和白色 效果需要类似于在容器中设置奇数和偶数子级的样式 但在我的例子中 子级是嵌套的 我可以使用每个嵌套元素的规则来做
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • AngularStrap 工具提示禁用我的自定义指令

    我正在尝试让 bs tooltip AngularStrap 指令与我自己的名为 checkStrength 的自定义指令一起使用 该指令检查密码的强度 单独使用这些指令中的任何一个时 它们都可以正常工作 但不能一起工作 This http
  • jQuery 中什么函数相当于 .SelectMany()?

    让我解释一下 我们知道 jQuery 中的映射函数充当 Select 如 LINQ 中 tr map function return this children first returns 20 tds 现在的问题是我们如何在 jQuery
  • 如何使用 jQuery 单击特定链接时打开引导导航选项卡的特定选项卡?

    我是 jquery 和 bootstrap 的新手 所以请考虑我的错误 我已经创建了一个用于登录和注册的 bootstrap 模式 它包含两个导航选项卡 称为登录和注册 我有两个按钮可以弹出相同的模态窗口 但在模态窗口内显示不同的选项卡 每
  • for循环中需要声明变量吗?

    有什么区别 for var i 0 i lt 5 i for i 0 i lt 5 i 是否有必要包含 var 关键字 我知道 var 关键字会影响变量范围 但我无法理解是否有必要在 for 循环中包含该关键字 在第二个示例中 您的变量是全
  • 标记(Markdown)+ Mermaid(流程图和图表)

    努力去争取 美人鱼 https github com knsv mermaid https github com knsv mermaid跟 共事 标记 https github com chjj marked https github c
  • Jquery 以编程方式更改

    文本

    编辑 解决方案是将其添加到个人资料页面而不是性别页面 profile live pageinit function event p pTest text localStorage getItem gender 我在列表视图中有一个带有一些文
  • $ 在 JQuery 中意味着什么

    在下面的 var obj one 1 two 2 three 3 four 4 five 5 each obj function i val console log val 这里是什么意思 是对象吗 是一个别名jQuery对象 函数 它充当
  • 为什么 try catch 块没有捕获 Promise 异常?

    我对承诺的错误处理感到困惑 答案可能很明显 但我不明白 我有以下示例代码 var test async function throw new Error Just another error try test then catch err

随机推荐

  • AOSP 构建日志中的 clang 命令中的 @ 是什么意思?

    In AOSP9 0 0 r30的构建日志 有这样的 clang 命令 prebuilts clang host linux x86 clang 4691093 bin clang OpenSource Build Android 9 0
  • 二维数组,用指定值修剪

    使用指定值修剪二维数组的好方法是什么 A 0 0 0 0 0 1 2 3 0 0 4 0 6 0 0 0 0 0 0 0 B trim A 0 results in B 1 2 3 4 0 6 修剪操作应该能够从四个边中的任何一个切掉 伪代
  • Solr:索引没有定义可操作的 DataImportHandler

    我试图使用 DataImportHandler 在云模式下使用 Solr 来索引我的 MySQL 数据库 以下是它使用 default 配置集的配置 solr 7 3 0 server solr configsets default con
  • 在 HTML 中的表格单元格内添加图像

    很抱歉 我无法做这个简单的事情 我无法在表格单元格中添加图像 以下是我编写的代码 CAR APPLICATION table border 5 align center th ABCD th tr th Name th th Origin
  • 某些边缘无法访问隐藏轮廓属性 EdgePrims

    我正在努力改变LineJoin对于 MATLAB 等高线图中的某些线 当我修改EdgePrims 只有 部分线路 受到影响 num incs 3 x linspace 1 1 num incs Xa Ya meshgrid x x Z ab
  • 无法删除所有 Azure 网站连接字符串

    对于我的团队目前正在开发的一个网站 我们正在尝试编写一些 PowerShell 自动化来临时覆盖通常位于 Web config 中的连接字符串 然后稍后将其删除 但是 使用 PowerShell cmdlet 和 Azure REST AP
  • OSX — 配置 Emacs 以使用 NSSpellChecker

    我在对 Aquamacs 进行逆向工程以提取 NSSpellChecker 的用法 功能时遇到问题 我想将这种用途 功能从源代码合并到 Emacs 的基本构建中 我找到了看似相关的文件 ns win el flyspell el and i
  • 初学者:rails 语法

    我刚刚开始学习 ruby on Rails 我正在使用 Rails 敏捷 Web 开发 第 4 版 Rails 3 1 一书 我安装了 Rails 3 1 3 书中的例子显示了这样的代码 但这段代码不起作用 我必须将代码更改为 这有效 但我
  • Tensorflow:没有启用任何 MLIR 优化通道(注册 1)

    我使用一个非常小的模型来使用 TensorFlow 2 3 和 keras 进行测试 查看我的终端 我收到以下警告 I tensorflow compiler mlir mlir graph optimization pass cc 118
  • 从 C# 中的 .resx 文件读取字符串

    如何在 C 中从 resx 文件读取字符串 ResourceManager除非您从某个位置加载 否则不需要external资源 对于大多数情况 假设您创建了一个项目 DLL WinForms 等等 您只需使用项目命名空间 资源 和资源标识符
  • URL 主机中可以显示哪些有效字符?

    我正在编写一些处理 URL 的代码 并且我想确保我不会遗漏一些奇怪的情况 除 A Z 0 9 和 之外 主机是否还有其他有效字符 这包括子域中的任何内容等 本质上是 和第一个 之间的任何内容 Thanks 请参见对有效主机名的限制 http
  • 将 AngularFire 与 Angular ui-router 一起使用时如何启用路由安全?

    是否可以使用AngularFire 路线安全模块 https github com firebase angularFire seed blob master app js module routeSecurity js有角的UI路由器 h
  • 如果我在应用程序中添加 ACTION-VIEW 最终结果是什么?

    我从我的 Android 工作室收到了这个通知 应用程序无法被 Google 搜索索引 考虑添加至少一个 具有 ACTION VIEW 意图填充器的活动 请参阅问题说明 更多细节 添加深层链接以使您的应用程序进入 Google 索引并获得安
  • 如何跟踪 Django 中的按钮单击?

    Views py 我希望能够转到用户页面 然后单击并通过与 Twitter 完全相同的按钮关注他们 我有点知道如何添加用户 正如您在我的视图中通过添加变量看到的那样 但我真的不知道如何将其实际实现到一个按钮中 让我可以跟随用户 我已经被困在
  • “%tB”格式化程序如何工作?

    System out format tB 12 我应该从中得到一个 十二月 但是我得到了一个很好的例外 Exception in thread main java util IllegalFormatConversionException
  • 如何使 Firebase 函数模拟器基于数据库模拟器更新触发

    简而言之 我想测试一个Firebase 功能 https firebase google com docs functions本地 特别是由实时数据库触发器 https firebase google com docs functions
  • 前端实例时间突然增加[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经使用 GAE 应用程序 1 年了 每天前端实例时间花费不到 1 美元 然而 今天它突然增加到10美元 我没有做任何事情 应用程序的流
  • 如何让div在浏览器中占据100%视口高度

    我有一个 div 标签 我意识到它没有按应有的方式填充 100 的高度 My code container width 100vw height 100vh background purple body margin 0px div div
  • 阻止 AWS ElasticBeanstalk 中 Apache 中的无效 HTTP_HOST 标头

    我有几个运行部署在 AWS ElasticBeanstalk 中的 Django Apache 的网站 我唯一的问题是每天收到数百封有关此主题的电子邮件 Django ERROR EXTERNAL IP Invalid HTTP HOST
  • 使用 Emscripten 编译 GMP/MPFR

    好吧 这已经让我发疯了 我已经尝试了至少一个月 但互联网上的任何地方都没有帮助 我按照以下步骤操作this https github com kripken gmp js 当我执行这些步骤时 甚至这个示例也不起作用 因为当我这样做时 我得到