CentOS/RedHat の Makefile にパッチを適用して lib64 を使用するのは普通ですか?

CentOS/RedHat の Makefile にパッチを適用して lib64 を使用するのは普通ですか?

CentOS 6のディストリビューションについてはMakefile.patch

-   @echo 'libdir=$${prefix}/lib' >> tap.pc
+   @echo 'libdir=$${prefix}/lib64' >> tap.pc

私の質問は、それが実行方法であるかどうかです。CentOS の 64 ビットおよび 32 ビットのインストール用にすべての make ファイルを書き換えるのは普通ですか? これを make で処理し、ハードコーディングせずに 64 ビット アーキテクチャ用にビルドする方法はありますか?

メイクファイルの後半では、? のインストールをハードコーディングするこの慣例に従っていることがわかります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そのようなものがあるかどうかを確認します。例:この例以下の内容を持つ同じ spec ファイルからマルチライブラリ ビルド (例: x64_64 および i686) を実行できます。

%make_install PREFIX=%{_prefix} INSTALL_LIB=%{buildroot}%{_libdir}

この場合はパッチ適用は必要ありません。

cmake ベースのプロジェクトでは、次のようにして適切なライブラリ ディレクトリを指定できます。

%cmake .. -DCMAKE_INSTALL_PREFIX="%{_prefix}" \
  -DCMAKE_INSTALL_LIBDIR="%{_libdir}"

したがって、最後の手段として、Makefileライブラリ ディレクトリのカスタマイズが許可されていない場合は、パッチを適用します。

ただし、このようなパッチを作成するのは面倒になるかもしれません。そのため、セクションsedで作業を行うことができます%prep

関連情報