레드햇 7.2에서는 되고 페도라에서는 안되는 프로그램
글쓴이: lordmiss / 작성시간: 수, 2004/02/25 - 11:24오전
레드헷 7.2에서는 아무런 문제가 없이 잘 돌아가던 프로그램이 페도라에서는 안 돌아가는군요. 이런 에러 메세지를 냅니다.
cannot handle file 'libc.so.6' with TLS data
어떻게 해결할 수 있는건지 모르겠습니다. 라이브러리 관련 에러가 있다는 말인거 같아서 ldd를 이용해 보니 이 바이너리는 정적으로 컴파일되어 있는 프로그램이더군요.
꼭 쓰긴 써야 하는 프로그램이고, 더군다나 이게 CPU 번호 보고 돌아가는 프로그램이라 다른 컴에서 쓸 수도 없습니다. 하드를 적당히 나눠서 레드햇 7.2를 깔고 써야 하는것인지...-_-; 이렇게 한다면 그냥 하드 하나를 parted로 나눠서 해야 하는겁니까? 같은 리눅스 파티션이라 헷갈리는거 아닐까요? 사실은 parted를 써서 일단 하드를 나눠 놓으려고 하는데, 홈페이지에 디스크 부팅 이미지가 없어서 그것도 못하고 있습니다. 쩝...
Forums:
redhat 7.3에서 9로 가면서 NPTL 지원이 들어갔습니다. 그 프
redhat 7.3에서 9로 가면서 NPTL 지원이 들어갔습니다. 그 프로그램이 이부분과 잘 호환이 되지 않는 것 같습니다.
LD_ASSUME_KERNEL=2.2.5 환경변수를 주고 실행해보세요. 이것은 NPTL을 사용하지 말라는 것입니다. 이렇게 해봐서 실행이 되지 않으면 redhat 7.3이 필요한 것 같습니다.
안되는데 말이죠. 그렇다면...
말씀하신대로 LD_ASSUME_KERNEL을 export시킨 후에 실행해 보았는데도 변화는 없습니다. 제 생각에 이 변수를 지정하는 것은 동적으로 링크되어 있는 프로그램의 경우에 부르는 라이브러리를 nptl 지원 안된 것으로 부르라는 뜻인거 같네요.
제 경우에는 이게 정적으로 컴파일되어 있는거라서 아마 반응이 없는 것 같습니다.
별다른 해결책이 없다면 이제 하드의 일부에 레드햇 7.2를 까는게 유일한 해결책인거 같은데요...
지금 페도라가 깔려 있는 시스템의 하드를 나눠서 레드햇 7.2를 까는게 가능한가요? 어차피 같은 파일 시스템으로 되어 있으니 / 파티션 두 개, boot 파티션 두 개 이런 식이면 문제가 될 것 같아서 말이죠.
Re: 정적 컴파일되어 있다면..
정적으로 컴파일 되어 있다면, 라이브러리와는 전혀 상관없이
단지 커널 버젼차이에 의해서만 동작하거나 안하거나 해야 맞습니다.
물론, 이 경우에는 동작을 '제대로' 안할 뿐이지 그런 에러메세지를
뿌리진 않겠죠.
아무래도, 그 프로그램이 내부에서 libc.so.6 를 dlopen() 같은 콜로
동적으로 열어서 사용하는듯 싶은데...
그런 경우라면 compat-* 라이브러리들을 설치해서
활용해야 할듯 싶군요.
댓글 달기