Premake5 不会构建在 FreeBSD 10.1 上

Premake5 Won't Build On FreeBSD 10.1

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

上崩溃

消息如下:

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

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

-ldl显然是第一个绊脚石。接下来是premake.c中的函数premake_locate_executable。在这方面,他们使用的是 /proc 文件系统,这是一个 linuxism,由于这在 BSD 上失败,他们正在退回到某些 lua 方法,但他们似乎假设 lua_tostring 弹出它不弹出的相应值。由于他们的堆栈在此函数中不平衡,因此以下 lua_call 试图调用他们留在堆栈中的垃圾而不是他们想要的函数。

即使在我解决了这个问题之后,他们仍然使用 getconf _NPROCESSORS_ONLN 来获取核心数量以进行 make build 的多作业,但他们实际上并没有检查这个调用是否成功(它不在外部Linux 和 MacOSX)。

解决这个问题后,我 运行 发现他们的 makefile 不是常规 make,而是 GNU-make,所以我不得不改用 gmake 来尝试构建。

从那时起,它才被解开,因为 contrib 目录中的 none premake 文件是为 BSD 配置的,尽管它是合法的配置目标之一(即它不是默认的)到 linux),因此这些组件没有配置。

TLDR:BSD 不是受支持的平台