lib64를 사용하기 위해 CentOS/RedHat용 Makefile을 패치하는 것이 정상입니까?

lib64를 사용하기 위해 CentOS/RedHat용 Makefile을 패치하는 것이 정상입니까?

CentOS 6 배포를 위해 Makefile.patch다음을 검토 중입니다.

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

내 질문은 그것이 이루어진 방식인지 여부입니다. CentOS에서 64/비트 및 32/비트 설치에 대한 모든 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이와 같은 것이 있는지 확인하십시오. 예:이 예다음을 포함하는 동일한 사양 파일에서 multilib 빌드(예: x64_64 및 i686)를 수행할 수 있습니다.

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

이 경우 패치가 필요하지 않습니다.

cmake 기반 프로젝트는 다음과 같이 올바른 라이브러리 디렉터리에 대해 알려줄 수 있습니다.

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

따라서 최후의 수단으로 Makefile라이브러리 디렉토리의 사용자 정의가 허용되지 않는 경우 패치를 수행합니다.

그러나 이러한 패치를 만드는 것은 지루할 수 있습니다. 따라서 sed해당 섹션에서 작업을 수행할 수 있습니다 %prep.

관련 정보