![¿Es normal parchear un Makefile para CentOS/RedHat para usar lib64?](https://rvso.com/image/169428/%C2%BFEs%20normal%20parchear%20un%20Makefile%20para%20CentOS%2FRedHat%20para%20usar%20lib64%3F.png)
Para distribución en CentOS 6, estoy revisando uno Makefile.patch
que 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.in
por 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 Makefile
tiene 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 Makefile
no 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 sed
a la obra en la %prep
sección.