在 macOS 上链接静态的 Lua 库

我正在尝试编译和链接一个程序(使用 CMake),该程序使用 Lua 5.3 的 C 接口在 Mac OS X 10.15.7 上运行。但是我遇到了以下问题:

  • brew install lua@5.3 只会安装动态库
  • 由于系统完整性保护(?),我无法将源代码生成的静态库复制到 /usr/local
  • 如果我将它们放在其他地方(使用 find_package(Lua 5.3 REQUIRED)), 我不知道如何让 CMake 找到这些库

有什么最简单的方式来解决这个问题?

点赞
用户9922866
用户9922866

如果我正确理解了你的问题,你正在尝试使用 Lua 的 C API,这意味着你需要访问主要的头文件 lua.hlualib.hlauxlib.h,以及在构建解释器时创建的静态库 liblua.a

我建议从 lua.org 下载 lua-5.3.5.tar.gz 然后从源代码构建。

这可以很容易地在终端中完成:

$ wget http://www.lua.org/ftp/lua-5.3.5.tar.gz
$ tar xzf lua-5.3.5.tar.gz
$ cd lua-5.3.5
$ make macosx

之后,你应该能够执行 make install,将 Lua 解释器复制到 /usr/local/bin,我相信。

如果你不想将关键的 Lua 头文件放入你的包含路径中,使用 -I-L 标志构建你的程序。此外,在链接程序时不要忘记 -llua -ldl -lm 标志。

2020-12-23 21:00:55