Ist es normal, ein Makefile für CentOS/RedHat zu patchen, um lib64 zu verwenden?

Ist es normal, ein Makefile für CentOS/RedHat zu patchen, um lib64 zu verwenden?

Für die Distribution in CentOS 6 überprüfe ich eine Makefile.patch, die

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

Meine Frage ist, ob das so gemacht wird oder nicht. Ist es normal, alle Make-Dateien für 64-Bit- und 32-Bit-Installationen unter CentOS neu zu schreiben? Gibt es eine Möglichkeit, Make damit umgehen zu lassen und es einfach für 64-Bit-Architekturen zu erstellen, ohne dies hart zu codieren?

Später im Makefile können Sie sehen, dass sie mit dieser Konvention fortfahren, die Installation für lib64? fest zu codieren.

+   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

Antwort1

Was Sie beschreiben, ist eine der Möglichkeiten, wenn eine von Ihnen erstellte Bibliothek foo.pc.inbeispielsweise nicht mit etwas ausgeliefert wird.

Die Konvention lautet: Wenn das Makefile(oder das Build-System) die Konfiguration des Bibliotheksverzeichnisses über eine Umgebungsvariable zulässt, dann wird diese verwendet.

Stellen Sie also als ersten Schritt fest, ob eine gegebene Sache Makefileso etwas hat. Beispiel:dieses Beispielermöglicht den Multilib-Build (z. B. x64_64 und i686) auf der Grundlage derselben Spezifikationsdatei mit:

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

In diesem Fall ist kein Patchen erforderlich.

Einem cmake-basierten Projekt kann das richtige Bibliotheksverzeichnis folgendermaßen mitgeteilt werden:

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

MakefileWenn keine Anpassung des Bibliotheksverzeichnisses möglich ist, sollten Sie das Patchen also nur als letzten Ausweg verwenden.

Allerdings kann das Erstellen solcher Patches mühsam werden. Sie können also sedim %prepAbschnitt damit arbeiten.

verwandte Informationen