2

我正在尝试从源代码在 FreeBSD 10.1 上构建 Premake5。我最终通过删除“-dl”选项并明确使用 gmake 进行编译来编译它。它构建了,但除了吐出以下错误消息外,我什么也做不了。不管我如何调用它。它甚至在“premake5 --help”上也会崩溃。

这是消息:

PANIC:调用 Lua API 时出现不受保护的错误(尝试调用字符串值)

4

1 回答 1

2

代码是错误的,因为所有的退出。首先假设 linux 是 posix,但显然不是这样。他们到处都在使用 linuxism,因此转换为 posix 将是一项艰巨的任务,并且在完成之前,它永远不会在基于非 linux posix 的系统上令人满意地工作。

-ldl显然是第一个绊脚石。接下来是在函数premake_locate_executablepremake.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 不是受支持的平台

于 2015-10-13T22:53:49.383 回答