문제

Red Hat Linux에서 HP UX 서버에서 실행되는 프로그램을 컴파일하려고합니다.

XERCES-C 라이브러리를 사용하여 XML 파일을 구문 분석합니다. 편집은 괜찮지 만 실행하려고하면 다음 메시지를받습니다.

./A.out : 공유 라이브러리를로드하는 동안 오류 : Libxerces-C.SO.28 : 공유 객체 파일을 열 수 없습니다 : 해당 파일 또는 디렉토리가 없습니다.

나는 무슨 일이 일어나고 있는지 이해하기 위해 매우 간단한 프로그램을 썼습니다.

#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/util/TransService.hpp>
#include <xercesc/parsers/SAXParser.hpp>
#include <xercesc/util/OutOfMemoryException.hpp>



int main(int argc, char* argv[])
{
        return 0;
}

다음과 같이 편집했습니다.

g ++ test.cpp -l./xml/xerces-c_2_8_0/lib-lxerces-c -i./xml/xerces-c_2_8_0/include

놀랍게도 파일은 실제로 있습니다.

lib]$ ls
libxerces-c.a   libxerces-c.so.28    libxerces-depdom.a   libxerces-depdom.so.28
libxerces-c.so  libxerces-c.so.28.0  libxerces-depdom.so  libxerces-depdom.so.28.0

이견있는 사람 ? 나는 뭔가 빠진 것 같지만 무엇을 모른다.

미리 감사드립니다.

도움이 되었습니까?

해결책

운영 ldd a.out 링커가 오른쪽을 해결할 수 있는지 확인하십시오.

내보내다 LD_LIBRARY_PATH 현재 폴더를 포함하려면 (경로 변수와 동일한 방식으로) LDD를 다시 확인하십시오.

다른 팁

당신이 원하는 것을하는 좋은 방법은 다음과 같습니다.

g++ test.cpp -Xlinker -R ./xml/xerces-c_2_8_0/lib -lxerces-c -I./xml/xerces-c_2_8_0/include

또는

g++ test.cpp -Wl,-rpath ./xml/xerces-c_2_8_0/lib -lxerces-c -I./xml/xerces-c_2_8_0/include

Xlinker 또는 WL 옵션 특정 링크 옵션을 사용할 수 있으므로 LD_LIBRARY_PATH를 수정할 필요가 없습니다.

런타임 C 라이브러리에 코드에서 정적으로 편집 한 다양한 기호를 찾을 수 있고 평소 /lib 및 /usr /lib 위치에 있어야합니다.

LD_LIBRARY_PATH에 공유 라이브러리의 경로를 추가하여이를 수행합니다. 이 경우, 이것은 컴파일러에 -L 인수를 위해 넣은 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top