Llvm Can';t使用Emscripten编译GMP库

Llvm Can';t使用Emscripten编译GMP库,llvm,gmp,emscripten,Llvm,Gmp,Emscripten,我已使用最新版本的Emscripten尝试了此处的说明: .a文件似乎已正确创建。然后,我尝试针对该库进行编译(在调试模式下),这似乎是可行的: 但是,当我尝试运行生成的Javascript时,会出现以下错误: marcosscriven@ubuntu-laptop:~/sources/gmp-5.0.2$ node complete.js /home/marcosscriven/sources/gmp-5.0.2/complete.js:2452 ___gmpz_init(((

我已使用最新版本的Emscripten尝试了此处的说明:

.a文件似乎已正确创建。然后,我尝试针对该库进行编译(在调试模式下),这似乎是可行的:

但是,当我尝试运行生成的Javascript时,会出现以下错误:

marcosscriven@ubuntu-laptop:~/sources/gmp-5.0.2$ node complete.js 

/home/marcosscriven/sources/gmp-5.0.2/complete.js:2452
      ___gmpz_init(((5242892)|0));
      ^
TypeError: undefined is not a function
    at _pidigits (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2452:7)
    at Object._main (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2429:7)
    at Object.callMain (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2644:24)
    at doRun (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2679:20)
    at run (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2703:12)
    at Object.<anonymous> (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2725:13)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
所以我完全不知所措

可能值得注意的是,在使用常规编译器构建时,针对库编译测试效果良好

编辑:更进一步。在该库的5.1.1版中,他们引入了一个新的配置选项--dissable assembly,它执行一般的C编译

现在的问题是,当测试运行时,它从不停止

建议我“禁用”gmp中可能和不可能的选项。h:

但我不知道如何“禁用”它们。通常有0或1选项,但我在这里看不到。我甚至不明白这个特殊的选项有什么作用

谢谢


Marcos

我终于成功了。(事实上,MPFR也是如此)


最大的问题是确保使用32位的选项和标题。

前导的
\uuu
的数量匹配吗?根据制作Emscripten的阿隆(Alon)的说法,需要额外的下划线。你愿意就如何构建它写一份详细的指南吗?恐怕我正在与您(gmp)遇到的问题进行斗争,但似乎无法解决…>
marcosscriven@ubuntu-laptop:~/sources/gmp-5.0.2$ node complete.js 

/home/marcosscriven/sources/gmp-5.0.2/complete.js:2452
      ___gmpz_init(((5242892)|0));
      ^
TypeError: undefined is not a function
    at _pidigits (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2452:7)
    at Object._main (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2429:7)
    at Object.callMain (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2644:24)
    at doRun (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2679:20)
    at run (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2703:12)
    at Object.<anonymous> (/home/marcosscriven/sources/gmp-5.0.2/complete.js:2725:13)
    at Module._compile (module.js:449:26)
    at Object.Module._extensions..js (module.js:467:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
marcosscriven@ubuntu-laptop:~/sources/gmp-5.0.2$ !llvm-nm
llvm-nm .libs/libgmp.a | grep gmpz_init
00000000 T __gmpz_init
00000000 T __gmpz_init2
         U __gmpz_init
00000000 T __gmpz_inits
00000000 T __gmpz_init_set
00000000 T __gmpz_init_set_d
00000000 T __gmpz_init_set_si
00000000 T __gmpz_init_set_str
00000000 T __gmpz_init_set_ui
         U __gmpz_init
         U __gmpz_init_set_ui
         U __gmpz_init2
         U __gmpz_init_set_ui
         U __gmpz_init
         U __gmpz_init_set_str
         U __gmpz_init
         U __gmpz_init2
         U __gmpz_init_set
         U __gmpz_init
         U __gmpz_init_set