Linux에서 작은 Qt (C++) GUI 응용 프로그램을 빌드하려고하지만 연결되는 Qt 라이브러리의 종속성 누락에 대해 불만을 제기하면서 수많은 링커 오류로 빌드하지 못합니다. Qt 라이브러리에서 ldd를 사용하여 라이브러리가 실제로 있는지 확인했습니다. Linking dependencies of a shared library 을 그리고 그 스레드가 내 정확한 문제를 확인하는 데 도움 동안, 그 스레드의 결론은 내 응용 프로그램에 연결해야한다는 것을 보인다자동으로 공유 라이브러리의 종속성에 연결하는 방법
내 문제는이 글의 토론과 관련이있을 것 같다!
애플리케이션이 다음 명령으로 컴파일된다
g++ -m64 -Wl,-O1 -o Executable some-object.o some-other-object.o -lQtCore -lQtGui -lQtXml -L/usr/lib64 -L/usr/X11R6/lib64 -lpthread
이것은 다음과 같은 형태의 경고를 발생 실행하고 연결이 결국합니다 ("누락"라이브러리에 정의 된 심볼들) 정의 기준 오류 실패
.../ld: warning: libglib-2.0.so.0, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libpng14.so.14, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libz.so.1, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libfreetype.so.6, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
등 (총에서 찾을 수 없습니다 (18) 종속성이 있습니다.) 내가 만약 내가 얻을 수
이 컴파일
가서 -lglib, -lpng14, -lz -lfreetype 등을 명시 적으로 추가하십시오. 그러나 언급 한 것처럼 18 가지 종속성이 있습니다. 나는 그렇게하지 않을 것입니다. 나는 그것을 할 필요가없는 것으로 보인다.정확히 동일한 Linux Distro (openSUSE 12.2)를 사용하는 랩톱 컴퓨터에서 동일한 문제없이 프로젝트를 컴파일했습니다. Qt를 포함한 모든 라이브러리는 배포판 저장소에서 설치되었습니다.
필자는 openSUSE 설치시 설치 문제 일 수 있다고 생각하지만이 문제를 해결하기 위해 어디서부터 시작해야할지 모르겠습니다.
건배, 크레이그
같은 일을 할 수 있다고 생각합니다. 나는 일종의 시스템 구성 오류가 의심된다. 아마도 컴파일러와 binutils와 같은 툴체인을 재설치하는 것이 도움이 될 것입니다 ...? –
Yast 사용 binutils를 제거한 다음 gcc 도구를 다시 설치하면 이제 작동합니다. 답장을 보내 주셔서 감사합니다. –