web-dev-qa-db-ja.com

Ubuntu14用Opengl(QT 5.4のビルド)

今朝から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
1
theAlse

おそらくlibgl1-mesa-devパッケージです。

1
Velkan

Debian 8.5で同じ問題に遭遇しました:Nvidiaドライバー+ GitからQt5をビルドする で推奨されるすべてのライブラリがインストールされていますが、Qt 5.9の構成手順がOpenGLサポートが見つからないため失敗しました。

抜粋:

  • Qtは、libGL.soに対してリンクすることにより、openGLサポートのチェックを構成します-しかし、libがありません
  • libGL.solibgl1-mesa-glxからlibGL.soへのシンボリックリンクを追加するlibGL.so.x.y.zによって提供されます(私の場合はlibGL.so.1.2.0
  • dpkgによると、libGL.so.1.2.0libgl1-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
1

以下のソリューションは、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

0
noel av

以下は、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が見つかりませんでした

0
noel av

Ubuntu 16.04とQt 5.9で同じ問題が発生しました。最初にlibgl1-mesa-devおよびlibglu1-mesa-devがインストールされていないときにconfigureを実行しました。その後、これらのlibgl *ライブラリをインストールしました。しかし、「OpenGLが見つかりません」というエラーが残りました。現在の非圧縮ディレクトリが削除され、アーカイブが再び解凍されると、エラーは消えました。

0
Rinat Gadelshin