ld:警告:忽略文件liblua.a,为macOS-x86_64构建,但试图链接到为未知不受支持的文件格式(0x21 0



macOS 12.4/XCode 13.4.1

尝试从来源:构建lua 5.4.4

$ make
Guessing Darwin
/Applications/Xcode.app/Contents/Developer/usr/bin/make all SYSCFLAGS="-DLUA_USE_MACOSX -DLUA_USE_READLINE" SYSLIBS="-lreadline"
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lapi.o lapi.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE   -c lcode.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lctype.o lctype.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ldebug.o ldebug.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ldo.o ldo.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ldump.o ldump.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lfunc.o lfunc.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lgc.o lgc.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE   -c llex.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lmem.o lmem.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lobject.o lobject.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lopcodes.o lopcodes.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE   -c lparser.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lstate.o lstate.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lstring.o lstring.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ltable.o ltable.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ltm.o ltm.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lundump.o lundump.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lvm.o lvm.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lzio.o lzio.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lauxlib.o lauxlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lbaselib.o lbaselib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lcorolib.o lcorolib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ldblib.o ldblib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o liolib.o liolib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lmathlib.o lmathlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o loadlib.o loadlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o loslib.o loslib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lstrlib.o lstrlib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o ltablib.o ltablib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lutf8lib.o lutf8lib.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o linit.o linit.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o lua.o lua.c
gcc -std=gnu99 -O2 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_USE_MACOSX -DLUA_USE_READLINE    -c -o luac.o luac.c
ar rcu liblua.a lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib liblua.a
gcc -std=gnu99 -o lua   lua.o liblua.a -lm -lreadline
gcc -std=gnu99 -o luac   luac.o liblua.a -lm -lreadline
ld: warning: ignoring file liblua.a, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x21 0x3C 0x61 0x72 0x63 0x68 0x3E 0x0A 0x2F 0x20 0x20 0x20 0x20 0x20 0x20 0x20 )
ld: warning: ignoring file liblua.a, building for macOS-x86_64 but attempting to link with file built for unknown-unsupported file format ( 0x21 0x3C 0x61 0x72 0x63 0x68 0x3E 0x0A 0x2F 0x20 0x20 0x20 0x20 0x20 0x20 0x20 )
Undefined symbols for architecture x86_64:
"_luaG_getfuncline", referenced from:
_PrintFunction in luac.o
"_luaL_loadfilex", referenced from:
_pmain in luac.o
"_luaL_newstate", referenced from:
_main in luac.o
"_luaM_free_", referenced from:
_pmain in luac.o
"_luaU_dump", referenced from:
_pmain in luac.o
"_lua_checkstack", referenced from:
_pmain in luac.o
"_lua_close", referenced from:
_main in luac.o
"_lua_load", referenced from:
_pmain in luac.o
"_lua_pcallk", referenced from:
_main in luac.o
"_lua_pushcclosure", referenced from:
_main in luac.o
"_lua_pushinteger", referenced from:
_main in luac.o
"_lua_pushlightuserdata", referenced from:
_main in luac.o
"_lua_tointegerx", referenced from:
_pmain in luac.o
"_lua_tolstring", referenced from:
_main in luac.o
_pmain in luac.o
"_lua_touserdata", referenced from:
_pmain in luac.o
ld: symbol(s) not found for architecture x86_64
Undefined symbols for architecture x86_64:
"_luaL_callmeta", referenced from:
_msghandler in lua.o
"_luaL_checkstack", referenced from:
_pmain in lua.o
_doREPL in lua.o
"_luaL_checkversion_", referenced from:
_pmain in lua.o
"_luaL_error", referenced from:
_pmain in lua.o
_lstop in lua.o
"_luaL_len", referenced from:
_pmain in lua.o
"_luaL_loadbufferx", referenced from:
_doREPL in lua.o
_dostring in lua.o
"_luaL_loadfilex", referenced from:
_pmain in lua.o
"_luaL_newstate", referenced from:
_main in lua.o
"_luaL_openlibs", referenced from:
_pmain in lua.o
"_luaL_tolstring", referenced from:
_pushline in lua.o
"_luaL_traceback", referenced from:
_msghandler in lua.o
"_lua_close", referenced from:
_main in lua.o
"_lua_concat", referenced from:
_doREPL in lua.o
"_lua_createtable", referenced from:
_pmain in lua.o
"_lua_gc", referenced from:
_pmain in lua.o
"_lua_getglobal", referenced from:
_pmain in lua.o
_doREPL in lua.o
_pushline in lua.o
"_lua_gettop", referenced from:
_pmain in lua.o
_doREPL in lua.o
_dostring in lua.o
"_lua_pcallk", referenced from:
_main in lua.o
_pmain in lua.o
_doREPL in lua.o
_dostring in lua.o
"_lua_pushboolean", referenced from:
_pmain in lua.o
"_lua_pushcclosure", referenced from:
_main in lua.o
_pmain in lua.o
_doREPL in lua.o
_dostring in lua.o
"_lua_pushfstring", referenced from:
_doREPL in lua.o
_msghandler in lua.o
_pushline in lua.o
"_lua_pushinteger", referenced from:
_main in lua.o
"_lua_pushlightuserdata", referenced from:
_main in lua.o
"_lua_pushlstring", referenced from:
_pushline in lua.o
"_lua_pushstring", referenced from:
_pmain in lua.o
_doREPL in lua.o
"_lua_rawgeti", referenced from:
_pmain in lua.o
"_lua_rawseti", referenced from:
_pmain in lua.o
"_lua_rotate", referenced from:
_pmain in lua.o
_doREPL in lua.o
_dostring in lua.o
_pushline in lua.o
"_lua_setfield", referenced from:
_pmain in lua.o
"_lua_setglobal", referenced from:
_pmain in lua.o
"_lua_sethook", referenced from:
_laction in lua.o
_lstop in lua.o
"_lua_settop", referenced from:
_main in lua.o
_pmain in lua.o
_doREPL in lua.o
_dostring in lua.o
_pushline in lua.o
"_lua_toboolean", referenced from:
_main in lua.o
"_lua_tointegerx", referenced from:
_pmain in lua.o
"_lua_tolstring", referenced from:
_main in lua.o
_pmain in lua.o
_doREPL in lua.o
_dostring in lua.o
_msghandler in lua.o
"_lua_touserdata", referenced from:
_pmain in lua.o
"_lua_type", referenced from:
_msghandler in lua.o
"_lua_typename", referenced from:
_msghandler in lua.o
"_lua_warning", referenced from:
_pmain in lua.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [luac] Error 1
make[3]: *** Waiting for unfinished jobs....
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [lua] Error 1
make[2]: *** [Darwin] Error 2
make[1]: *** [guess] Error 2
make: *** [guess] Error 2

我的工具链坏了吗?

原来我安装了binutils,所以构建系统使用binutils的ar来创建静态库:

$ which ar
/usr/local/bin/ar
$ ls -l /usr/local/bin/ar
lrwxr-xr-x  1 me  admin  32 Jul 13 21:52 /usr/local/bin/ar -> ../Cellar/binutils/2.38_1/bin/ar

卸载binutils:后

$ which ar
/usr/bin/ar

我能够编译lua

最新更新