LinuxでのUnixアプリケーションのコンパイル[閉じる]

LinuxでのUnixアプリケーションのコンパイル[閉じる]

明らかに、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\compileLinuxボックスで実行しようとしたときに表示される結果です。

# 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_do29行のシェル関数読む

build_do() {
  ( . ./"$build_it_cmds" "$1" "$2" "$3" > "$3" )
}

追加された内容を参照してください./

その後、この問題に関するバグレポートをプロジェクトに送信する必要があります。幸いなことに、GitHubを使用すると、これを行うのはとても簡単です。しかし、2012年以降、このプロジェクトの開発がまったくなく、中断されたかどうかはわかりません。

関連情報