Lua 普雷梅克5元';t建立在FreeBSD 10.1之上

Lua 普雷梅克5元';t建立在FreeBSD 10.1之上,lua,premake,Lua,Premake,我正试图从源代码在FreeBSD 10.1上构建Premake5。我最终通过删除“-dl”选项并显式使用gmake进行构建来编译它。它已构建,但我无法让它执行任何操作,只能发出以下错误消息。不管我怎么调用它。它甚至在“premake5--帮助”时崩溃 以下是信息: 恐慌:在调用LuaAPI时发生未受保护的错误(尝试调用字符串值)当所有代码都退出时,代码有错误。首先假设linux是posix,而事实显然并非如此。他们到处都在使用Linuxim,因此转换到posix将是一项相当艰巨的任务,在这项任务

我正试图从源代码在FreeBSD 10.1上构建Premake5。我最终通过删除“-dl”选项并显式使用gmake进行构建来编译它。它已构建,但我无法让它执行任何操作,只能发出以下错误消息。不管我怎么调用它。它甚至在“premake5--帮助”时崩溃

以下是信息:


恐慌:在调用LuaAPI时发生未受保护的错误(尝试调用字符串值)

当所有代码都退出时,代码有错误。首先假设linux是posix,而事实显然并非如此。他们到处都在使用Linuxim,因此转换到posix将是一项相当艰巨的任务,在这项任务完成之前,它将无法在非linux posix系统上令人满意地工作

-ldl
显然是第一个绊脚石。接下来是
premake.c
中的函数
premake\u locate\u executable
。在这种情况下,他们使用的是
/proc
文件系统,这是一种Linux操作系统,由于在BSD上失败,他们转而使用一些lua方法,但他们似乎认为
lua\u tostring
会弹出相应的值,而它不会。由于它们的堆栈在此函数中不平衡,下面的
lua\u调用
试图调用它们留在堆栈上的垃圾,而不是它们想要的函数

即使在我解决了这个问题之后,他们仍然使用
getconf\u NPROCESSORS\u ONLN
来获取多任务make build的内核数,但是他们实际上没有检查这个调用是否成功(这在Linux和MacOSX之外是没有的)

在解决了这个问题之后,我遇到了一个问题,他们的makefile不是常规make,而是gnumake,所以我不得不改用
gmake
来尝试构建

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


TLDR:BSD不是受支持的平台

此处回溯可能会有所帮助。该错误意味着有东西试图调用字符串值(可能是错误字符串),而不是函数/块。我猜这与可加载模块支持有关(因为您删除了
-dl
)。(你是指
-dl
还是
-ldl
?)我很确定开发团队中没有人对BSD了解很多,更不用说每个人都尝试过了。我们可以使用BSD贡献者;它的贡献和黑客进入门槛非常低……;)当然,我们会尽我们所能帮助你@TurkeyMan BSD基本上只是Linux功能的Posix子集。如果去掉Linux ISM,那么剩下的应该同时在Linux和BSD上运行。以BSD为目标,您通常可以免费获得Linux。Opengroup拥有这些标准,虽然他们的网站是一只可以导航的狗,但你只需通过谷歌
Opengroup功能
就可以获得跨平台的文档(例如)。@parakleta做得很好。我认为确保premake在Unix上实际上是跨平台的,而不是明确针对Linux和OSX,这一点非常重要。我错误地认为,如果他们把它移植到OSX(BSD用户空间的衍生产品)上,他们早就从非POSIX的细节中抽象出来了。我错了。我希望我现在有时间来修理那些东西。也许有人可以按照你的建议做一个相对简单的修复(并且仍然允许我们在POSIX上指定平台构建链)。@eris0xff你是说它不构建,还是不工作?OSX与Linux或BSD非常不同,它需要特殊处理。我们甚至发现Linux和OSX clang之间的clang构建选项不兼容。OSX有“框架”,我们还发现了-rpath与linux的区别。事实证明,OSX有很多特定的考虑因素。