2015-12-02 243 views
4

我爲靜態編譯編譯了qt 5.5,它工作正常。Qt5.5 static build在ubuntu14上找不到-IGL

然而,當我在臨文件中添加小工具「QT + =小部件」我得到的鏈接錯誤「無法找到-IGL」

從我讀這是與開放GL庫做。我曾嘗試以下:

sudo apt-get install libglu1-mesa-dev 

sudo apt-get install libgl1-mesa-dev 

但這裏沒有運氣......我想知道如果我需要這個靜態的版本?或者一個符號鏈接丟失了,但我無法弄清楚下一步:(

編輯這是實際的錯誤消息:

g++ -static -static-libgcc -static-libstdc++ -Wl,-O1 -o ../targetRel/McpSupervisor main.o cconfig.o cconfigxml.o mcpprocessbase.o rpeprocess.o supervisor.o cipcomms.o mcpsupervisor_plugin_import.o moc_mcpprocessbase.o moc_supervisor.o moc_cipcomms.o -L/usr/lib/i386-linux-gnu/mesa -L/usr/local/Qt-5.5.1/lib -lQt5Xml -lQt5Widgets -L/usr/local/Qt-5.5.1/plugins/bearer -lqconnmanbearer -lqgenericbearer -lqnmbearer -lQt5Network -L/usr/local/Qt-5.5.1/plugins/platforms -lqxcb -L/usr/local/Qt-5.5.1/plugins/xcbglintegrations -lqxcb-glx-integration -lxcb-glx -lQt5XcbQpa -lX11-xcb -lXi -lxcb-render-util -lxcb-render -lxcb -lxcb-image -lxcb-icccm -lxcb-sync -lxcb-xfixes -lxcb-shm -lxcb-randr -lxcb-shape -lxcb-keysyms -lxcb-xkb -lQt5PlatformSupport -lfontconfig -lfreetype -lQt5DBus -lXrender -lXext -lX11 -L/usr/local/Qt-5.5.1/plugins/imageformats -lqdds -lqicns -lqico -lqjp2 -lqmng -lqtga -lqtiff -lqwbmp -lqwebp -lQt5Gui -lpng -lqtharfbuzzng -lQt5Core -lz -licui18n -licuuc -licudata -lqtpcre -lm -ldl -pthread -lgthread-2.0 -lglib-2.0 -lrt -lGL -lpthread /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/libX11.a(CrGlCur.o): In function open_library': (.text+0x33): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/bin/ld: cannot find -lGL /usr/local/Qt-5.5.1/plugins/imageformats/libqjp2.a(jas_stream.o): In function jas_stream_tmpfile': jas_stream.c:(.text+0x7a4): warning: the use of tmpnam' is dangerous, better use mkstemp' /usr/local/Qt-5.5.1/lib/libQt5Core.a(qfilesystemengine_unix.o): In function QFileSystemEngine::resolveGroupName(unsigned int)': qfilesystemengine_unix.cpp:(.text+0x943): warning: Using 'getgrgid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/libglib-2.0.a(libglib_2_0_la-gutils.o): In function g_get_user_database_entry': (.text+0x25a): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/libglib-2.0.a(libglib_2_0_la-gutils.o): In function g_get_user_database_entry': (.text+0xa3): warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/local/Qt-5.5.1/lib/libQt5Core.a(qfilesystemengine_unix.o): In function QFileSystemEngine::resolveUserName(unsigned int)': qfilesystemengine_unix.cpp:(.text+0x592): warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/local/Qt-5.5.1/lib/libQt5Network.a(qhostinfo_unix.o): In function `QHostInfoAgent::fromName(QString const&)': qhostinfo_unix.cpp:(.text+0x580): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking collect2: error: ld returned 1 exit status make: *** [../targetRel/McpSupervisor] Error 1 09:49:17: The process "/usr/bin/make" exited with code 2. Error while building/deploying project qtMain (kit: Qt 5.5.1 GCC 32bit Static) When executing step "Make" 09:49:17: Elapsed time: 00:08.

+0

'LS的什麼輸出 - l/usr/lib/libGL *'? – keltar

+0

文件libGL.so位於'/ usr/lib/x86_64-linux-gnu/libGL.so'(或'/ usr/lib/i386-linux-gnu/libGL.so' ...所有'mesa'軟件包:http://packages.ubuntu.com/source/trusty-updates/mesa ...靜態,libgl1-mesa-swx11-dev:不可用。最新的軟件包是Ubuntu 12.04。... –

+0

@KnudLarsen這是否意味着我無法使其靜態工作? - 有沒有解決辦法? –

回答

3

什麼是您實際的問題:

您有未滿足的依賴關係 您認爲您已安裝所有必需的依賴項
sudo apt-get install libglu1-mesa-dev


sudo apt-get install libgl1-mesa-dev

的問題是,你有一個i386的系統,該系統是X32系統。
但你已經安裝了開發文件使用上述

下面的命令x64系統是答:

Intsall以下的事情

sudo apt-get install libgl1-mesa-dev:i386 

    sudo apt-get install libglu1-mesa-dev:i386 

現在它應該工作

其他一些h遊客elpful東西,這個特定的問題

下面的線是我試圖解決這個問題,但他們沒有工作,因爲誰問這個問題的人有一個X32系統,但下面的工作意見的x64系統。但從來沒有下面的元回答將很好地爲那些有同樣的問題和x64系統的人服務。並且這也將有助於理解發生類似問題後要執行哪些基本步驟

@ code_fodder我想通過在您的問題下面發表評論,但我沒有50個聲望來這樣做。

所以我必須使用答案提交表單來做到這一點。 :(

你有其他梅薩GL實用程序?

如果你沒有他們,那麼如果你想使用OpenGL ES,那麼你必須使用安裝其他梅薩utilies(opengles,EGL)

sudo apt-get install mesa-utils-extra 

讓我知道,安裝使用

sudo apt-get install mesa-utils 

如果有效的話。

發佈新信息17-DEC-2015

我會在這裏發佈我project.pro文件的一部分。它特別包含我用於簡單OpenGL項目的庫鏈接方法。

我使用GLEW與OpenGL和SDL2

TEMPLATE = app 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp \ 
      mesh.cpp \ 
      display.cpp \ 
      shader.cpp 

HEADERS += \ 
     mesh.h \ 
     display.h\ 
     shader.h 


unix|win32: LIBS += -lGL \ 
        -lGLEW \ 
        /usr/local/lib/libSDL2-2.0.so 

如你我使用的靜態和動態鏈接庫的通知。

您可能需要爲.pro文件添加: unix | win32: LIBS += -L/usr/lib/x86_64-linux-gnu/mesa/。但是,對於32位系統,路徑可能不同。在該文件夾中有所需的mesa庫文件。這些是我的系統的文件。

[email protected]:/usr/lib/x86_64-linux-gnu/mesa$ ls 
ld.so.conf libGL.so libGL.so.1 libGL.so.1.2.0 

現在試着編譯,看看是否能工作

如果不那麼無論你有滿足的依賴關係,或者你正在使用舊的OpenGL。

現在運行sudo apt-get install mesa-utils後,您將可以使用名爲glxinfo的命令。它會告訴你關於你的顯卡的所有必要信息。

運行glxinfo | grep "OpenGl version string" 它會告訴你,你有什麼OpenGL和檯面的版本 我的是這樣的 OpenGL version string: 3.0 Mesa 10.3.2

如果它們小於3.0,那麼你沒有使用現代的OpenGL和您可能需要更新您的顯卡驅動。

但是,如果他們是3.0或以上,那麼你可能是好的。

我不能重現你的問題,所以我認爲你缺少的依賴

見的QT論壇這個帖裏,你說的人同樣的問題,有問題的是安裝的依賴

後固定http://forum.qt.io/topic/36282/solved-qt-5-2-0-and-lgl-issue

在qt論壇上的最後一個答案是相當不錯的請參閱它。

更新我是否有效。

希望這會有所幫助。

+0

Hey Sayan ,不用擔心它會成爲一個「答案」,我沒有使用常識來解決小規則的問題:o 我會嘗試這個,如果它有效,我會重新申請賞金並向你發送點數。我的理解是我認爲我需要檯面GL的靜態版本......?無論如何,我會先嚐試這個,因爲我只運行兩條安裝線我的帖子,而不是你指定的:) –

+0

真相被告知,我在谷歌搜索了你的問題,他們中的大多數有他們的解決方案後,他們安裝sudo apt-get install libglu1-mesa-dev我認爲你有缺少依賴關係。我會在上面更新我的回答/問題。 –

+0

您可能需要將編譯器指向庫目錄。使用'unix | win32:LIBS + = -L/usr/lib/x86_64-linux-gnu/mesa /'。我更新了我的答案。 –

0

您可能需要使用-L選項,GCC,它具有以下手冊頁描述給指定的GL庫可以找到路徑,〔實施例:

-Ldir Add directory dir to the list of directories to be searched for -l.

+0

嗨hkBst,我相信他們已經在我的路上或什麼東西了嗎?,但它值得一試:o - 再次如果這個工程,我會重新申請賞金和獎勵:) –