问题是我在文档/程序集中有一个文件系统,如下所示:
测试:
.global _start
.text
_start:
mov $60, %rax # exit
mov $0, %rdi # return code 0
syscall
测试.o:
\* exists \*
编译.bash:
as -o test.o test.s && ld -e _start -o test.s test.o && chmod 777 test.o && (./test ; echo $?)
但是当我尝试运行compile.bash时我得到:
ld: dynamic executables or dylibs must link with libSystem.dylib for architecture x86_64
当我尝试运行 test.o 时:
bash: ./test.o: 无法执行二进制文件
我正在使用 gnu 汇编器,但在教程中我说的是 as,而不是 gcc。
我尝试更改命令,但发生的情况是它给出了很多错误。我使用的是 macOS 货币版本 12.5.1 (21G83)。我期望它在运行命令时打印 0,但它没有。
ld:动态可执行文件或 dylib 必须与 libSystem.dylib 链接 架构 x86_64
尝试以下几行:
as test.s -o test.o
ld test.o -o test -macosx_version_min 13.0 -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lSystem