Как скомпилировать и выполнить автономный исполняемый файл SML-NJ
Я видел еще одну ссылку для ответа, но я не понимаю, что такое base.cm и для чего он нужен?
1 ответ
Вы задаете два вопроса.
Что такое base.cm и для чего он нужен?
Это базовая библиотека. Это позволяет использовать встроенные функции.
Как скомпилировать и выполнить автономный исполняемый файл SML-NJ
Предполагая, что вы следовали учебному пособию Джеспера Ринберга о том, как выполнить образ кучи, следующее, что нужно для того, чтобы SML/NJ создал отдельный исполняемый файл, - это преобразование этого образа кучи. Можно предположить, что это можно сделать гипотетически, используя heap2exec, инструмент, который берет образ кучи, например файл.x86-linux, сгенерированный в моей системе, и генерирует файл.asm, который можно собрать и связать.
К сожалению, этот инструмент не очень ухоженный, поэтому вам придется
- Перейдите на страницу smlnj.org и исправьте ссылку для скачивания, удалив "www." (эта страница и страница SourceForge не содержат одинаковых объяснений или предположений о количестве аргументов, и ни одна из ссылок на страницу не работает).
- Загрузите и извлеките этот инструмент и исправьте скрипт build, чтобы он указывал на ваш инструмент ml-build
- Исправьте использование аргумента инструмента, изменив
[inf, outf]
в[_, inf, outf]
- Бежать
./build
который генерирует 'heap2asm.x86-linux' в моей системе Например, чтобы создать файл.asm для самой программы heap2asm, запустите
sml @SMLload heap2asm.x86-linux heap2asm.x86-linux heap2asm.s
На данный момент я, к сожалению, не смог создать исполняемый файл, который работает. Например, если вы бежите
gcc -c heap2asm.s
а такжеld heap2asm.o
вы получаете предупреждение о пропаже_start
этикетка. Получающийся в результате исполняемый файл segfaults, даже если вы переименуете существующий_sml_heap_image
ярлык для_start
, То есть, похоже, что фрагмент кода входа, который обычно доставляет среда выполнения, здесь отсутствует.На этом этапе откажитесь от SML/NJ и используйте MLton для создания автономных двоичных файлов.