今朝からUbuntu 14 LTS
を新規インストールしました。Nvidia graphic cards
を搭載したPCを使用しており、Nvidia Webサイト(NVIDIA-Linux-x86_64-352.30
)から最新バージョンのドライバーを正常にインストールしました。
QT 5.4
(qt-everywhere-opensource-src-5.4.2)をビルドしようとしていますが、openglが見つからないという問題に直面しています。
すべての依存関係を解決するために、次のパッケージをインストールしました。
Sudo apt-get update
Sudo apt-get install libxi-dev build-essential libdbus-1-dev libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev
そして最後に:
Sudo apt-get install mesa-common-dev
Sudo apt-get install libglu1-mesa-dev
私の知る限り、上記はUbuntu用のopenglパッケージを完全にインストールするはずです。
次に、次のコマンドを使用してQTを構成しようとします。
./configure -v -confirm-license -developer-build -opensource -xinput2 -dbus -opengl desktop -nomake examples -nomake tests)
次のエラーが表示されます。
OpenGL auto-detection... ()
g++ -c -pipe -O2 -Wall -W -fPIC -I. -I../../../mkspecs/linux-g++ -o opengldesktop.o opengldesktop.cpp
g++ -Wl,-O1 -o opengldesktop opengldesktop.o -lGL
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
make: *** [opengldesktop] Error 1
OpenGL disabled.
The OpenGL functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL
しばらく検索しましたが、すべての適切なパッケージがインストールされているが、システムパスに何かが欠けていると想定できます。何が欠けている可能性があり、それをシステムパスに追加するにはどうすればよいですか?
次の出力が役立つ場合があります。
ldconfig -p | grep libGL.so
libGL.so.1 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libGL.so.1
libGL.so.1 (libc6,x86-64) => /usr/lib/libGL.so.1
おそらくlibgl1-mesa-dev
パッケージです。
Debian 8.5で同じ問題に遭遇しました:Nvidiaドライバー+ GitからQt5をビルドする で推奨されるすべてのライブラリがインストールされていますが、Qt 5.9の構成手順がOpenGLサポートが見つからないため失敗しました。
抜粋:
libGL.so
に対してリンクすることにより、openGLサポートのチェックを構成します-しかし、libがありませんlibGL.so
はlibgl1-mesa-glx
からlibGL.so
へのシンボリックリンクを追加するlibGL.so.x.y.z
によって提供されます(私の場合はlibGL.so.1.2.0
)dpkg
によると、libGL.so.1.2.0
はlibgl1-mesa-glx
の一部でもありますが、 'reasons'にはありませんlibGL.so
の他のバージョンを確認すると、Nvidiaドライバーによってインストールされたライブラリバージョンがあることがわかります(/usr/lib/x86_64-linux-gnu/libGL.so.346.35
)このファイルにシンボリックリンクを追加すると、問題が解決しました
Sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
-recheck
を使用してconfigure
を再実行します段階的な手順(同様の問題にも適用できます):
$ ./configure -opensource -confirm-license -recheck -v 1>dump 2>&1
...
> grep 'libGL.so.*No' dump
> /usr/bin/ld.gold: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so: No such file or directory
> /usr/bin/ld.gold: error: cannot open /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so: No such file or directory
$ ls -l /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so
lrwxrwxrwx 1 root root 14 Aug 19 2015 /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libGL.so -> libGL.so.1.2.0
libGL.so.1.2.0が欠落しています。プロバイダーを確認してください...
$ dpkg -S libGL.so.1.2.0
libgl1-mesa-glx:AMD64: /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
$ dpkg -l libgl1-mesa-glx
...
||/ Name Version Architecture Description
+++-========================================-=========================-=========================-=====================================================================================
ii libgl1-mesa-glx:AMD64 10.3.2-1+deb8u1 AMD64 free implementation of the OpenGL API -- GLX runtime
したがって、libgl1-mesa-glx
ライブラリはインストールされますが、libGL.so.1.2.0
はパスにありません。他のlibGL.so*
ファイルを確認してください...
$ find /usr/lib -name libGL.so*
/usr/lib/x86_64-linux-gnu/libGL.so.346.35
/usr/lib/x86_64-linux-gnu/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so
/usr/lib/libGL.so.1
/usr/lib/x86_64-linux-gnu/libGL.so.346.35
は私のボックスで唯一の有効なopenGLライブラリです(Nvidiaドライバーインストーラーによってインストールされました)。
解決:
Sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.346.35 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0
以下のソリューションは、clang-c ++がqtソースを適切にコンパイルできないため、後の段階で失敗しました。そのため、g ++コンパイラ自体を使用して別のソリューションを投稿しました。
次の手順は、Nvidiaカードと独自のドライバーを備えたMint 17.3 32ビットシステム上のデスクトップOpenGLを検出します。 /root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbaseに含まれる/root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecs/common/linux.confファイル/mkspecs/linux-g++/qmake.conf
環境変数は次のように設定する必要があります。
QMAKE_INCDIR_OPENGL = "/ usr/include/GL" QMAKE_LIBDIR_OPENGL = "/ usr/lib /" QMAKE_INCDIR_OPENGL_ES2 = $$ QMAKE_INCDIR_OPENGL QMAKE_LIBDIR_OPENGL_ES2 = $$ QMAKE_LIBDIR_OPENGL
QMAKE_LIBS_OPENGL = -lGL QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
使用されているlibGLは、私のシステムのNvidiaドライバーが提供するライブラリを指します。 /usr/lib/libGL.so-> /usr/lib/i386-linux-gnu/libGLX_nvidia.so.390.48
一方、/ usr/lib/i386-linux-gnu/libGL.so-> mesa/libGL.soからMesa3Dが提供するライブラリ。
また、mesa-common-dev、libglu1-mesa-dev、libgl1-mesa-dev、およびその他のOpenGL開発パッケージがインストールされていることを確認してください。
/root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix =/root/work/qt5_setup/qt_install -opensource -confirm-license -platform linux-g ++ && make -j 5
以下は、Nvidiaカードと独自のドライバーを備えたMint 17.3 32ビットシステム上のデスクトップOpenGLを検出します。 /root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix =/root/work/qt5_setup/qt_install -opensource -confirm-license -platform linux-clang-libc ++
プラットフォームのオプションは/root/work/qt5_setup/qt-everywhere-src-5.10.0/qtbase/mkspecsにあります
上記の前に、clang(C、C++およびObjective-Cコンパイラ(LLVMベース))およびlibc ++-dev(LLVM C++標準ライブラリ(開発ファイル))をインストールします
LLVMは、コンパイラー、オプティマイザー、ジャストインタイムコードジェネレーター、およびその他の多くのコンパイラー関連プログラムの構築を容易にするライブラリーとツールのコレクションです。
一方、/ root/work/qt5_setup/qt-everywhere-src-5.10.0/configure --prefix =/root/work/qt5_setup/qt_install -opensource -confirm-license
デフォルトのプラットフォームオプション(linux-g ++ linux-g ++-32)では、デスクトップOpenGLが見つかりませんでした
Ubuntu 16.04とQt 5.9で同じ問題が発生しました。最初にlibgl1-mesa-devおよびlibglu1-mesa-devがインストールされていないときにconfigureを実行しました。その後、これらのlibgl *ライブラリをインストールしました。しかし、「OpenGLが見つかりません」というエラーが残りました。現在の非圧縮ディレクトリが削除され、アーカイブが再び解凍されると、エラーは消えました。