Нормально ли исправлять Makefile для CentOS/RedHat для использования lib64?

Нормально ли исправлять Makefile для CentOS/RedHat для использования lib64?

Для распространения в CentOS 6 я рассматриваю, Makefile.patchчто имеет,

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

Мой вопрос в том, так ли это делается. Нормально ли переписывать все файлы make для 64-битных и 32-битных установок на CentOS? Есть ли способ заставить 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например.

Соглашение заключается в том, что если Makefile(или система сборки) позволяет настраивать каталог библиотеки через переменную среды, то она используется.

Итак, в качестве первого шага определите, есть ли у данного Makefileчто-то подобное. Напримерэтот примерпозволяет выполнять многобиблиотечную сборку (например, x64_64 и i686) из одного и того же файла спецификаций, который имеет:

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

В этом случае исправление не требуется.

Проекту на основе cmake можно указать правильный каталог библиотеки, например, так:

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

Поэтому только в крайнем случае, если Makefileневозможно настроить каталог библиотеки, вам следует выполнить исправление.

Хотя, это может быть утомительно для создания таких патчей. Так что вы можете заняться sedработой в %prepразделе.

Связанный контент