簡體   English   中英

無法在 QT Creator 上編譯 Pangolin

[英]Cannot compile Pangolin on QT Creator

我是穿山甲的新手,正在嘗試在 Qt Creator 上編譯穿山甲的“hello world”代碼。 我在編譯時遇到了這個“未定義的引用”問題。 我的代碼很簡單:

#include <iostream>
#include <pangolin/pangolin.h>
using namespace std;
int main()
{
  pangolin::CreateWindowAndBind("Main",640,480);
  return 0;
 }

我的 .pro 文件如下所示:

QT += core
QT -= gui

TARGET = hellopangolin
CONFIG += c++11
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

INCLUDEPATH += /home/mavbot/Pangolin/include /home/mavbot/Pangolin/build/src/include

LIBS += -L "/home/mavbot/Pangolin/build/src"
-lpangolin \

LIBS += -lGLEW \
        -lGL \
        -lEGL

我已經成功編譯並構建了穿山甲庫,因為示例程序在我的系統上運行流暢。我在示例的可執行文件上運行了 ldd 並找到了依賴庫並嘗試在 QT Creator 中鏈接它們。 我也是 OpenGL 的新手。 我遇到的錯誤是:

錯誤:對`pangolin::CreateWindowAndBind(std::__cxx11::basic_string, std::allocator >, int, int, pangolin::Params const&)' 的未定義引用

我構建穿山甲如下:

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j8

編輯 2:在 Botje 的建議之后,在庫路徑之后插入 / 幫助它編譯。 但是現在我有一個運行時錯誤:

/home/mavbot/Documents/qtcodes/build-hellopangolin-Desktop-Debug/hellopangolin:加載共享庫時出錯:libpangolin.so:無法打開共享對象文件:沒有這樣的文件或目錄

編輯 3: -rwxrwxr-x 1 mavbot mavbot 2333648 Mar 10 23:55 /home/mavbot/Pangolin/build/src/libpangolin.so

linux-vdso.so.1 =>  (0x00007ffedc5b8000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f05e3401000)
libGLEW.so.1.13 => /usr/lib/x86_64-linux-gnu/libGLEW.so.1.13 (0x00007f05e317e000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f05e2e44000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f05e2c3c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f05e2a1f000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f05e269d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f05e2394000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f05e217e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f05e1db4000)
/lib64/ld-linux-x86-64.so.2 (0x00007f05e3a5a000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f05e1b9a000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f05e1971000)
libxcb-dri3.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0 (0x00007f05e176e000)
libxcb-present.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-present.so.0 (0x00007f05e156b000)
libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f05e1364000)
libxshmfence.so.1 => /usr/lib/x86_64-linux-gnu/libxshmfence.so.1 (0x00007f05e1161000)
libglapi.so.0 => /usr/lib/x86_64-linux-gnu/libglapi.so.0 (0x00007f05e0f30000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f05e0d1e000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f05e0b1b000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f05e0915000)
libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f05e0713000)
libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007f05e04fa000)
libxcb-dri2.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0 (0x00007f05e02f5000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f05e00d3000)
libXxf86vm.so.1 => /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 (0x00007f05dfecd000)
libdrm.so.2 => /usr/lib/x86_64-linux-gnu/libdrm.so.2 (0x00007f05dfcbb000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f05dfab7000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f05df8b3000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f05df6ad000)

由於/home/mavbot/Pangolin/build/src不是查找庫的默認位置,您必須通知動態鏈接器 (ld.so) 在那里查找。

您可以通過以下方式執行此操作:

  • 每次運行程序時都設置環境變量LD_LIBRARY_PATH=/home/mavbot/Pangolin/build/src ,或者
  • 使用“運行路徑”編譯您的程序。 這將指示ld.so首先查看那里。 標志如下:
-Wl,-rpath=/home/mavbot/Pangolin/build/src
  • 或者只是全局安裝穿山甲,默認情況下鏈接器在其中查找(檢查/etc/ld.so.conf和/或/etc/ld.so.conf.d/*的內容以獲取默認路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM