在64位OS X上为32位构建和使用Lua时出现问题

我在使用自己构建的Lua时遇到了困难。

为了构建我的小项目,我正在使用以下命令:

gcc -m32 -arch i386 -I ~/Documents/lua-5.1.4/include -L ~/Documents/lua-5.1.4/lib -llua -mconsole -sectcreate __TEXT __info_plist ./Info.plist -o LuaProject -masm=intel LuaProject.cpp

我使用“make macosx test”构建了Lua。为了尝试构建32位,我修改了src/Makefile,使其变为:

CC= gcc
CFLAGS= -m32 -arch i386 -O2 -Wall $(MYCFLAGS)
AR= ar rcu
RANLIB= ranlib
RM= rm -f
LIBS= -lm $(MYLIBS)

MYCFLAGS=
MYLDFLAGS= -m32 -arch i386
MYLIBS=

这似乎对32位也起作用了。我所做的就是将-m32 -arch i386添加到CFLAGS(MYCFLAGS没有影响任何内容),并将-m32 -arch i386添加到MYLDFLAGS。在它们分别无法工作为32位或arch i386之后,我添加了两个(也许不是最好的逻辑),但没有改变任何东西。构建工作正常,所以我再运行“sudo make install local”,这将创建我用来尝试编译项目的好文件夹。

来自gcc的输出最终变成了以下内容:

Undefined symbols for architecture i386:

  "luaL_newstate()", referenced from:
      _main in LuaProject-15f700.o
  "luaL_openlibs(lua_State*)", referenced from:
      _main in LuaProject-15f700.o
  "luaL_loadbuffer(lua_State*, char const*, unsigned long, char const*)", referenced from:
      _main in LuaProject-15f700.o
  "lua_pcall(lua_State*, int, int, int)", referenced from:
      _main in LuaProject-15f700.o
ld: symbol(s) not found for architecture i386

我希望包含所有我需要的内容(lua.h、lauxlib.h、lualib.h),并且没有关于-llua本身的错误,所以我对为什么这不起作用感到困惑。

我不想用完整的Lua makefile混淆问题,但如果需要,我可以上传它。

点赞