![lib64를 사용하기 위해 CentOS/RedHat용 Makefile을 패치하는 것이 정상입니까?](https://rvso.com/image/169428/lib64%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20CentOS%2FRedHat%EC%9A%A9%20Makefile%EC%9D%84%20%ED%8C%A8%EC%B9%98%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%20%EC%A0%95%EC%83%81%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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
.