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