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

関連情報