我现在用的是MacBook Air M1。
我正在阅读一本低级编程的书。
我想我写的C代码编译到x86_64汇编。
用clang我可以很容易地做到这一点:
clang -target x86_64 -masm=intel -S add_two_numbers.c
但是当我包含一个库(例如stdio)时,它就不起作用了。
❯ clang -target x86_64 -masm=intel -S hello.c
hello.c:1:10: fatal error: 'stdio.h' file not found
#include <stdio.h>
^~~~~~~~~
正如clang docs所说,我可以手动安装x86_64库并执行以下操作:
clang -target x86_64 -masm=intel -I path/to/Include -L path/to/Library -S hello.c
但是我在MacOS上找不到可以下载的预构建软件包。我试过交叉编译,它太费力气了。
所以我放弃了,去找一些更简单的东西。我找到了这个问题的解决方案,我将在下面作为答案分享。
2条答案
按热度按时间nr7wwzry1#
使用
-arch
,而不是-target
。示例源/命令行/输出:
或者,如果你想使用
-target
,你需要指定一个像x86_64-apple-macos13
这样的目标三元组:如果只指定
x86_64
,则将其视为x86_64-unknown-unknown
。5f0d552i2#
而且很管用!🎉