我已经看到了另一个答案link但我不明白的是什么是基础.m是什么用的?
答案 0 :(得分:4)
你问两个问题。
什么是基础.m以及它的用途是什么?
这是Basis library。它允许使用内置函数。
如何编译和执行独立的SML-NJ可执行文件
假设您按照Jesper Reenberg关于如何执行堆映像的教程,为了让SML / NJ生成独立的可执行文件,您需要的下一件事就是转换此堆映像。假设应该使用 heap2exec 来做这件事,这是一个获取堆映像的工具,例如:在我的系统上生成的.x86-linux文件,并生成一个可以汇编和链接的.asm文件。
不幸的是,这个工具维护得不是很好,所以你必须
[inf, outf]
更改为[_, inf, outf]
./build
生成' heap2asm.x86-linux'在我的系统上例如,为了生成heap2asm程序本身的.asm文件,请运行
sml @SMLload heap2asm.x86-linux heap2asm.x86-linux heap2asm.s
此时,我遗憾地无法生成可行的可执行文件。例如。如果您运行gcc -c heap2asm.s
和ld heap2asm.o
,则会收到缺少_start
标签的警告。即使您将现有_sml_heap_image
标签重命名为_start
,也会产生可执行的段错误。也就是说,似乎这里缺少运行时环境通常提供的一段入口代码。
此时,丢弃SML / NJ并使用MLton生成独立的二进制文件。