Reputation: 45
I would like to assemble Aarch64 armv8 Assembly on my mac and eventually run it with qemu and maybe on a real device like a raspberry pi 2 or 4 later on. I don't know how to assemble the code I'm going to write, gcc, llvm-gcc and clang don't seem to support the -arch=armv8 flag or anything similar. So I can't build for the targeted architecture, how could I achieve this?
I'm running mac os 10.14.5. I wouldn't mind finding a solution that works on a recent ubuntu version either since I have a VM for linux development.
Upvotes: 1
Views: 2715
Reputation: 23880
The clang version that ships with Xcode supports -arch arm64
. (Or armv7
for 32bit.)
Note that if you want to use any libraries though, they'll have to be arm64 as well. If you want, you can invoke the iOS toolchain with xcrun -sdk iphoneos clang -arch arm64 [...]
, but then you'll also have to pull the libraries you want off of some IPSW and stuff them into qemu.
Also note that the above will give you a Mach-O binary. For your Raspberry Pi, you'll probably want an ELF, and you'll probably want gcc rather than clang. You should be able to build both gcc and GNU binutils from source with --target
as either aarch64-linux-gnu
or aarch64-none-elf
, depending on your goals. Yet another note: since macOS silently aliases gcc
to clang
and many tools depend on that, you'll probably also want to build this toolchain with something like --program-prefix=aarch64-
.
Upvotes: 4