Building universal libraries (x86_64 and arm64) for osx
- From: Chris Apple <chrisa@xxxxxxxxxxxxxx>
- To: "luajit@xxxxxxxxxxxxx" <luajit@xxxxxxxxxxxxx>
- Date: Sun, 19 Mar 2023 16:03:48 +0000
Hi,
I’m attempting to build a universal or “fat” library for luajit for osx. This
process is described in detail here [1]. The sparknotes is “build a binary with
arch x86_64, then build a binary with arch arm64, then glue them together using
the lipo tool”.
In attempting to do so with luajit, I try to build on my arm64 machine with the
command:
make CFLAGS="-DLUAJIT_ENABLE_GC64 -DLUAJIT_ENABLE_LUA52COMPAT"
TARGET_CFLAGS="-arch x86_64"
==== Building LuaJIT 2.1.0-beta3 ====
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C src
LINK luajit
ld: warning: Linking with PIE, -image_base will be ignored
ld: warning: ignoring file luajit.o, building for macOS-arm64 but attempting to
link with file built for unknown-x86_64
ld: warning: ignoring file libluajit.a, building for macOS-arm64 but attempting
to link with file built for macOS-x86_64
Undefined symbols for architecture arm64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [luajit] Error 1
make: *** [default] Error 2
Essentially, everything passes until the very end where it attempts to link the
binary. No arm64 main is found (as expected) so it dies.
I’m wondering a few things:
* Is there something I’m missing to compile for x86 on my arm64 machine for
OSX?
* If not, is there a way to run make, such that I only build the libraries,
and not the binary? I have confirmed that the library is built as expected in
the correct arch, so linking the binary is unnecessary for me.
Really appreciate the help. I have been trying different combos of the cross
build opts [2] with no luck.
Thanks,
Chris
[1]
https://developer.apple.com/documentation/apple-silicon/building-a-universal-macos-binary
[2]
https://luajit.org/install.html
Other related posts: