我有一个可以作为堆映像运行的 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
shell 脚本,关键行(变量扩展)执行以下操作:
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
来生成正确的架构?