2009-11-03 6 views
1

-lxerces-c를 지정할 때마다 LIBPATH에 libxerces-c.so 라이브러리가 있는지 확인합니다.libxerces-c.so.28에 링크하는 방법?

1x. 왜 lib 파일을 libxerces-c.so.28로 생성합니까?

질문 2. 우리는 그러한 라이브러리에 어떻게 링크해야합니까?

내가 생각할 수있는 유일한 방법은 libxerces-c.so 링크를 만들어서 libxerces-c.so.28 파일에 연결하는 것입니다. 나는이 일을 오버 헤드로 생각합니다. 더 좋은 방법이 있습니까?

답변

2

파일 이름에 버전 번호가 있으므로 버전 2.8을 사용하는 프로그램 하나와 버전 2.9를 사용하는 다른 프로그램을 가질 수 있습니다. 이렇게하면 새 버전의 라이브러리를 추가해도 이전 라이브러리를 사용하는 기존 프로그램의 동작이 변경되지 않습니다.

일반적으로 새로 빌드 한 프로그램에서 사용할 라이브러리의 버전에 대한 sym 링크 인 libxerces-c.so 파일도 있어야합니다.

많은 Unix 패키지 관리자는 심볼 링크를 설치하는 별도의 개발 패키지를 갖게됩니다. devel 패키지를 설치하지 않은 것 같습니다.

+0

libxerces-c.so 기호 링크가 자동으로 생성된다는 말입니까? http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html 이 기사에서는 ldconfig를 실행하는 방법에 대해 설명합니다. 조금 더 설명하거나 어떤 위치를 가리킬 수 있습니까 – pankajt

+0

그 기사는 꽤 좋습니다. "ldconfig는 링커 이름을 설정하지 않습니다. 일반적으로 이것은 라이브러리 설치 중에 수행되며 링커 이름은 간단히"최신 "soname 또는 최신 실제 이름에 대한 심볼릭 링크로 생성됩니다." 어떻게 '링커 이름'없이 끝났는지 모르겠지만 지금은 symlink를 수동으로 생성하는 것이 좋습니다. –

0

또 다른 이유가 있습니다. libxerces-c에 링크하면 프로그램에 일부 xerces 헤더 파일이 포함될 가능성이 큽니다. 그리고 그 헤더들은 libxerces-c.so symlink를 통해 바이너리 라이브러리의 최신 버전에 묶여있다.

xerces-2.8의 헤더와 libxerces-2.9 ​​라이브러리 바이너리를 링크하면 작동하지 않을 가능성이 큽니다.

헤더와 바이너리 라이브러리를 혼합하여 예방책으로 생각하십시오.

관련 문제