明らかに、UnixとLinuxの基本的なオペレーティングシステムには類似点があります。
コンパイルされたMakefileがLinuxオペレーティングシステムではコンパイルされないが、FreeBSDまたはOSXオペレーティングシステムではコンパイルされない理由はありますか?
たとえば、次のアプリケーションをインストールすると、FreeBSDオペレーティングシステムでは正常にコンパイルされますが、CentOSまたはUbuntuでは失敗します。
http://www.superscript.com/trigger/install.html
この特定のMakefileを構築するために必要なLinuxオペレーティングシステムに欠けているライブラリやカーネルヘッダがありますか?
メモ用のMakefileは次のとおりです。 https://github.com/SuperScript/trigger/blob/master/src/Makefile
これがpackage\compile
Linuxボックスで実行しようとしたときに表示される結果です。
# package/compile
sh makefile.build default.build load load
makefile.build: line 30: .: default.build: file not found
sh makefile.build default.build systype systype
makefile.build: line 30: .: default.build: file not found
sh makefile.build default.build compile compile
makefile.build: line 30: .: default.build: file not found
sh makefile.build default.o.build trigger-pull.o trigger-pull
makefile.build: line 30: .: default.o.build: file not found
答え1
このパッケージで使用されているさまざまな独自のビルドスクリプトを調べた後、シェル用に作成されたようです。これ/bin/sh
により、デフォルトでスクリプトパスに関係なく、.
コマンド(source
シェルの)が現在のディレクトリからドットスクリプトを読み取って実行できるようになります。bash
明示的には提供されておらず、現在のディレクトリはありません$PATH
(または開発者は一般的に存在していないディレクトリを.
持っていると仮定します)。$PATH
この問題に対する解決策は、src/makefile.build
スクリプトをパッチして次のようにすることです。build_do
29行のシェル関数読む
build_do() {
( . ./"$build_it_cmds" "$1" "$2" "$3" > "$3" )
}
追加された内容を参照してください./
。
その後、この問題に関するバグレポートをプロジェクトに送信する必要があります。幸いなことに、GitHubを使用すると、これを行うのはとても簡単です。しかし、2012年以降、このプロジェクトの開発がまったくなく、中断されたかどうかはわかりません。