ソースから FreeBSD 10.1 で Premake5 をビルドしようとしています。「-dl」オプションを削除し、ビルドにgmakeを明示的に使用して、最終的にコンパイルしました。ビルドしましたが、次のエラーメッセージを吐き出す以外に何もできません。どのように呼び出すかは問題ではありません。「premake5 --help」でもクラッシュします。
メッセージは次のとおりです。
パニック: 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 であるという問題に遭遇したため、使用gmakeしてビルドするように変更する必要がありました。
その時点から、ディレクトリ内の premake ファイルはどれもcontribBSD が有効な構成ターゲットの 1 つであるにもかかわらず (つまり、デフォルトでは に設定されていないlinux) BSD 用に構成されていないため、これらのコンポーネントの構成が存在しないため、解明されました。
TLDR: BSD はサポートされているプラットフォームではありません