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.so
LD_LIBRARY_PATH에서 라이브러리를 검색한다는 것입니다.앞으로/etc/ld.so.conf
(&) /etc/ld.so.conf.d/
, 이는 LD_LIBRARY_PATH의 라이브러리가 표준 시스템 라이브러리를 재정의함을 의미합니다.
이는 라이브러리의 개발 버전을 테스트할 때와 같이 유용할 때도 있지만 그렇지 않으면 시스템을 망칠 수 있습니다.
귀하의 경우, matlab은 Qt 라이브러리의 이전(또는 단지 다른) 버전(및 libpython)과 연결될 수 있으며 해당 특정 버전이 필요합니다. 시스템에 설치된 다른 모든 프로그램은 시스템 lib 버전에 대해 컴파일되며 ld.so
matlab 버전을 사용하도록 지시하면 중단됩니다. 그러니 하지 마세요.
빠른 Google 검색을 통해 문제를 더 자세히 설명하는 다음 페이지가 나타났습니다.
그런데, 물건을 컴파일하는 경우 대신 -L
링커의 옵션 및/또는 설정을 사용하십시오 .LDFLAGS
LD_LIBRARY_PATH