CentOS 6展開の場合は、Makefile.patch
次のバージョンを確認しています。
- @echo 'libdir=$${prefix}/lib' >> tap.pc
+ @echo 'libdir=$${prefix}/lib64' >> tap.pc
私の質問はこれがどのように行われるかです。 CentOSで64 /ビットおよび32 /ビットインストール用のすべてのmakeファイルを再構築するのは正常ですか? makeがこれを処理してハードコーディングせずに64ビットアーキテクチャ用にのみビルドできる方法はありますか?
後で、makefileでインストールをハードコーディングするための規則を続行することがわかりますlib64
。
+ mkdir -p $(PREFIX)/lib64 $(PREFIX)/include $(PREFIX)/lib64/pkgconfig
+ install -c libtap.a $(PREFIX)/lib64
+ install -c libtap.so $(PREFIX)/lib64
+ install -c tap.pc $(PREFIX)/lib64/pkgconfig
答え1
foo.pc.in
あなたが説明することは、あなたが作成したライブラリがそのようなものと一緒に提供されていない場合に行く方法の1つです。
ルールは、Makefile
(またはビルドシステムが)環境変数を介してライブラリディレクトリの設定を許可する場合、その環境変数が使用されることです。
したがって、最初のステップは、特定のコンテンツにMakefile
同様のコンテンツがあることを確認することです。例えばこの例以下を使用して、同じ仕様ファイルに基づくマルチlibビルド(x64_64やi686など)を許可します。
%make_install PREFIX=%{_prefix} INSTALL_LIB=%{buildroot}%{_libdir}
この場合、パッチは必要ありません。
cmakeベースのプロジェクトは、次のように正しいライブラリディレクトリに関する情報を受け取ることができます。
%cmake .. -DCMAKE_INSTALL_PREFIX="%{_prefix}" \
-DCMAKE_INSTALL_LIBDIR="%{_libdir}"
したがって、最後の手段としてMakefile
ライブラリディレクトリのカスタマイズが許可されていない場合は、パッチを実行します。
しかし、そのようなパッチを作ることは退屈かもしれません。したがって、sed
その%prep
部分に対して作業を実行できます。