lib64を使用するためにCentOS / RedHat用Makefileにパッチを適用するのは正常ですか?

lib64を使用するためにCentOS / RedHat用Makefileにパッチを適用するのは正常ですか?

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部分に対して作業を実行できます。

関連情報