我正在尝试从源代码在 FreeBSD 10.1 上构建 Premake5。我最终通过删除“-dl”选项并明确使用 gmake 进行编译来编译它。它构建了,但除了吐出以下错误消息外,我什么也做不了。不管我如何调用它。它甚至在“premake5 --help”上也会崩溃。
这是消息:
PANIC:调用 Lua API 时出现不受保护的错误(尝试调用字符串值)
代码是错误的,因为所有的退出。首先假设 linux 是 posix,但显然不是这样。他们到处都在使用 linuxism,因此转换为 posix 将是一项艰巨的任务,并且在完成之前,它永远不会在基于非 linux posix 的系统上令人满意地工作。
这-ldl
显然是第一个绊脚石。接下来是在函数premake_locate_executable
中premake.c
。在这种情况下,他们使用的/proc
是 linuxism 的文件系统,并且由于这在 BSD 上失败,他们正在回退到一些 lua 方法,但他们似乎假设lua_tostring
弹出相应的值,而它没有。由于他们的堆栈在此函数中不平衡,因此以下lua_call
尝试调用他们留在堆栈上的垃圾而不是他们想要的函数。
即使在我解决了这个问题之后,他们也使用getconf _NPROCESSORS_ONLN
获取内核数量来执行 make 构建,但他们实际上并没有检查这个调用是否成功(它不在 Linux 和 MacOSX 之外)。
在解决了这个问题之后,我遇到了他们的 makefile 不是常规 make,而是 GNU-make 的问题,所以我不得不改用 usinggmake
来尝试构建。
从那时起,它就被解开了,因为contrib
目录中的 premake 文件都没有为 BSD 配置,尽管它是合法的配置目标之一(即它不默认为linux
),因此这些组件没有配置。
TLDR:BSD 不是受支持的平台