У меня есть программа SML / NJ, которую я могу запустить как образ кучи, и я хочу создать автономный исполняемый двоичный файл.Однако инструмент heap2exec
в SML / NJ 110.73 всегда выдает ошибки для меня.
Я создал свой образ кучи tigerc.x86-darwin
с помощью следующего:
ml-build sources.cm Main.main tigerc
Я могу запустить свою программухорошо, используя образ кучи через
sml @SMLload=tigerc.x86-darwin
Я должен быть в состоянии создать автономный двоичный файл через
heap2exec tigerc.x86-darwin tigerc
, но при этом выдается ошибка
ld: warning: -macosx_version_min not specificed, assuming 10.7
ld: warning: ignoring file tigerc.o, file was built for unsupported file format
which is not the architecture being linked (i386)
Я посмотрелв сценарии оболочки heap2exec
и в ключевых строках (с расширенной переменной) выполните следующие действия:
heap2asm "$heapfile" "$execfile".s
cc -c -o "$execfile".o "$execfile".s
ld -o "$execfile" ${RUNX} "$execfile".o
Когда я выполняю эти шаги по отдельности, команда cc
создает файл x86_64 .o
,но команда ld
пытается связать исполняемый файл i386.Поэтому мне нужно убедить команду cc
создать файл i386 .o
.
Есть ли способ установить переменную окружения, чтобы получить cc
для сборки i386 вместо x86_84?(Между прочим, ARCH
не работает, он уже установлен на i386
.)
Или есть другой обходной путь, чтобы получить heap2exec
для генерации правильной архитектуры?