É normal corrigir um Makefile para CentOS/RedHat para usar lib64?

É normal corrigir um Makefile para CentOS/RedHat para usar lib64?

Para distribuição no CentOS 6, estou revisando um Makefile.patchque tem,

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

Minha dúvida é se é assim ou não que se faz. É normal reescrever todos os arquivos make para instalações de 64/bit e 32/bit no CentOS? Existe uma maneira de fazer com que o make lide com isso e apenas construa para arcos de 64 bits sem codificar isso?

Mais tarde no makefile você pode ver que eles seguem em frente com esta convenção de codificação da instalação 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

Responder1

O que você descreve é ​​uma das maneiras, se uma biblioteca que você constrói não for enviada com algo como, foo.pc.inpor exemplo.

A convenção é que, se o Makefile(ou o sistema de compilação) permitir a configuração do diretório da biblioteca por meio de uma variável de ambiente, então ele está sendo usado.

Então, como primeiro passo, identifique se um dado Makefiletem algo parecido. Por exemploeste exemplopermite fazer compilação multilib (por exemplo, x64_64 e i686) a partir do mesmo arquivo de especificações que possui:

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

Nenhum patch é necessário neste caso.

Um projeto baseado em cmake pode ser informado sobre o diretório de biblioteca correto, assim:

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

Portanto, apenas como último recurso, se Makefilenão permitir qualquer personalização do diretório da biblioteca, você faria o patch.

Embora possa ser entediante criar tais patches. Então você pode colocar sedpara trabalhar na %prepseção.

informação relacionada