Matlab QT 라이브러리로 인해 프로그램이 실행되지 않습니다.

Matlab QT 라이브러리로 인해 프로그램이 실행되지 않습니다.

matlab내 컴퓨터에 도구 상자가 있습니다 Compiler. 컴파일러 코드가 작동하려면 라이브러리에 액세스해야 합니다. 다음 위치에 저장되어야 합니다.LD_LIBRARY_PATH

.bashrc그래서 다음을 포함하도록 콘텐츠를 조정했습니다 .

MATLAB_LIB="/usr/local/MATLAB/MATLAB_Runtime/v95/runtime/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v95/sys/os/glnxa64:/usr/local/MATLAB/MATLAB_Runtime/v95/extern/bin/glnxa64"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MATLAB_LIB

하지만 이제는 명령줄에서 다음과 같은 많은 프로그램을 실행할 수 없습니다.

~$ gnuplot
gnuplot: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Network.so.5: no version information available (required by gnuplot)
gnuplot: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Core.so.5: no version information available (required by gnuplot)
gnuplot: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Core.so.5: no version information available (required by gnuplot)
gnuplot: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Gui.so.5: no version information available (required by gnuplot)
gnuplot: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libtiff.so.5: no version information available (required by /lib/x86_64-linux-gnu/libgd.so.3)
gnuplot: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libtiff.so.5: no version information available (required by /lib/x86_64-linux-gnu/libwx_gtk2u_core-3.0.so.0)
gnuplot: relocation error: gnuplot: symbol qt_version_tag version Qt_5.11 not defined in file libQt5Core.so.5 with link time reference

또는

~$ vim
vim: symbol lookup error: /lib/x86_64-linux-gnu/libpython3.7m.so.1.0: undefined symbol: XML_SetHashSalt

또는

~$ kate
kate: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Xml.so.5: no version information available (required by kate)
kate: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Core.so.5: no version information available (required by kate)
kate: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Core.so.5: no version information available (required by kate)
kate: /usr/local/MATLAB/MATLAB_Runtime/v95/bin/glnxa64/libQt5Widgets.so.5: no version information available (required by kate...

파일에서 라이브러리 정의를 제거하면 .bashrc모든 것이 잘 작동합니다. 파일에서 라이브러리 경로를 제거하는 것 외에 이러한 문제를 피하기 위해 할 수 있는 일이 있습니까 .bashrc?

답변1

LD_LIBRARY_PATH항상 적용되도록 하려면 적어도 .bashrc에는 설정하지 마세요 .

특정 프로그램을 실행할 때나 새/다른 라이브러리로 테스트할 때 설정해도 괜찮습니다.

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$MATLAB_LIB" /path/to/matlab

이는 이 프로그램을 호출하는 경우에만 설정됩니다. 실행할 때마다 이 작업을 수행해야 하는 경우 matlab함수나 별칭 또는 셸 스크립트 래퍼를 사용하세요. 예를 들어:

alias matlab='LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$MATLAB_LIB" matlab'

문제는 Linux 런타임 동적 링커가 ld.soLD_LIBRARY_PATH에서 라이브러리를 검색한다는 것입니다.앞으로/etc/ld.so.conf(&) /etc/ld.so.conf.d/, 이는 LD_LIBRARY_PATH의 라이브러리가 표준 시스템 라이브러리를 재정의함을 의미합니다.

이는 라이브러리의 개발 버전을 테스트할 때와 같이 유용할 때도 있지만 그렇지 않으면 시스템을 망칠 수 있습니다.

귀하의 경우, matlab은 Qt 라이브러리의 이전(또는 단지 다른) 버전(및 libpython)과 연결될 수 있으며 해당 특정 버전이 필요합니다. 시스템에 설치된 다른 모든 프로그램은 시스템 lib 버전에 대해 컴파일되며 ld.somatlab 버전을 사용하도록 지시하면 중단됩니다. 그러니 하지 마세요.

빠른 Google 검색을 통해 문제를 더 자세히 설명하는 다음 페이지가 나타났습니다.

그런데, 물건을 컴파일하는 경우 대신 -L링커의 옵션 및/또는 설정을 사용하십시오 .LDFLAGSLD_LIBRARY_PATH

관련 정보