iconv를 사용하여 FreeBSD 10-CURRENT 및 이전 버전에 대해 하나의 바이너리만 갖는 방법

iconv를 사용하여 FreeBSD 10-CURRENT 및 이전 버전에 대해 하나의 바이너리만 갖는 방법

FreeBSD 10-CURRENT는 libiconv 라이브러리 대신 기본 iconv로 전환합니다. 우리 팀에는 이전 버전의 FreeBSD에서 컴파일한 iconv 호출을 사용하는 코드가 있습니다. 10-Current에서 실행 파일을 시작할 때 다음 오류와 함께 실행되지 않습니다.

Shared object "libiconv.so.3" not found, required by our-lib.so

이는 현재 존재하지 않는 -libiconv로 컴파일했기 때문에 발생합니다. 하지만 우리는 두 가지 다른 버전의 FreeBSD에서 컴파일하고 싶지 않습니다. 그렇다면 iconv를 사용하면 이전 버전의 FreeBSD에서 하나의 바이너리만 컴파일할 수 있는 방법이 있습니까?

답변1

FreeBSD는 비자유(GPLd) 코드를 BSD 라이센스에 따른 무료 코드로 대체하기 위해 새로운 네이티브 코드로 전환합니다.

자신만의 무료 구현을 마친 후에는 오염된 오래된 라이브러리를 제거하고 싶은 것이 분명합니다.

코드가 표준에 따라 작성된 경우 간단한 재컴파일로 문제를 해결할 수 있습니다. 원래 iconv 구현(Solaris)은 libc에 있었고 FreeBSD도 libc에 새 코드를 넣었다고 가정합니다.

관련 정보