Squeeze/Lenny 컴파일: 라이브러리 링크 오류

Squeeze/Lenny 컴파일: 라이브러리 링크 오류

여기에 문제가 있습니다. 테스트할 C++ 라이브러리("DataTsBroad")와 C++ 테스트 응용 프로그램("DataTsBroadTest")이 있습니다.
실제로 Lib 및 테스트 애플리케이션은 모두 Debian Lenny로 컴파일됩니다.

이제 Debian Lenny(고객 제한)에서 테스트 애플리케이션을 계속 컴파일하고 싶지만 최신 Debian 버전에서 작업하기 위해 Squeeze 또는 Wheezy에서 라이브러리를 컴파일하겠습니다.

그래서 저는 Squeeze에서 Lib를 성공적으로 컴파일했지만 나중에 Lenny에서 이 Lib를 사용하여 테스트 애플리케이션을 컴파일하려고 했을 때 실패했습니다! 링크 오류가 있습니다:

CXX 실행 파일 DataTsBroadTest /home/nis/pezierg/test/ProductMak/Export/DataTsBroad/L64/Release/libDataTsBroad64.so를 연결합니다. 'std::ctype::_M_widen_init() const@GLIBCXX_3.4.11'에 대한 정의되지 않은 참조
Collect2: ld는 1개의 종료 상태를 반환합니다.
make[2]: *** [DataTsBroadTest] 오류 1
​​make[1]: *** [CMakeFiles/DataTsBroadTest.dir/all] 오류 2
make:*[전체] 오류 2

문제의 원인은 분명오스트림C++ Lib, 내 Lib에서 모든 용도에 대해 주석을 달았는데 효과가 있었습니다.

그런데 실제로 이 문제를 어떻게 해결할 수 있을까요?

답변1

문제는 다른 버전의 Glibc를 사용하는 데서 발생하는 것 같습니다. 라이브러리는 Squeeze에서 컴파일하고 애플리케이션(Squeeze의 라이브러리 사용)은 Lenny에서 컴파일했습니다.

출력을 살펴보십시오.

ldd /home/nis/pezierg/test/ProductMak/Export/DataTsBroad/L64/Release/libDataTsBroad64.so

관련 정보