¿Es normal parchear un Makefile para CentOS/RedHat para usar lib64?

¿Es normal parchear un Makefile para CentOS/RedHat para usar lib64?

Para distribución en CentOS 6, estoy revisando uno Makefile.patchque tiene,

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

Mi pregunta es si se hace así o no. ¿Es normal reescribir todos los archivos creados para instalaciones de 64 y 32 bits en CentOS? ¿Hay alguna manera de manejar esto y simplemente compilar para arcos de 64 bits sin codificarlo?

Más adelante en el archivo MAKE, puede ver que siguen adelante con esta convención de codificar la instalación para 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

Respuesta1

Lo que usted describe es una de las formas en que una biblioteca que construye no incluye algo como, foo.pc.inpor ejemplo.

La convención es que, si Makefile(o el sistema de compilación) permite configurar el directorio de la biblioteca a través de una variable de entorno, entonces se está utilizando.

Entonces, como primer paso, identifique si un determinado Makefiletiene algo así. P.ejeste ejemplopermite realizar una compilación multilib (por ejemplo, x64_64 e i686) a partir del mismo archivo de especificaciones que tiene:

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

En este caso no se requieren parches.

A un proyecto basado en cmake se le puede informar sobre el directorio de biblioteca correcto, así:

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

Entonces, solo como último recurso, si Makefileno permite ninguna personalización del directorio de la biblioteca, deberá aplicar el parche.

Sin embargo, crear dichos parches puede resultar tedioso. Para que puedas ponerte manos seda la obra en la %prepsección.

información relacionada