我想編譯X11 + OpenGL的這些混合之一,但我沒有運行編譯器。特別是,我得到:正確鏈接Ubuntu中的GLX庫
undefined symbol: glXMakeCurrent
我已經試過
-lX11 -lGLU -lGL -lXext
作爲參數傳遞給鏈接器,以及它們的一些排列,沒有運氣這麼遠。
我正在運行Ubuntu 12.04,並且我已經安裝了所有與opengl相關的開發包,我有一個模糊的想法可能是相關的。我也在用C++進行開發,如果opengl頭文件沒有準備好,可能會導致問題......但它們是正確的?
我甚至在/ usr/lib/x86_64-linux-gnu /中用fgrep顯式地查找了符號,但它不在那裏,而且`nm'表示沒有符號。
那麼,與glx鏈接的正確方法是什麼?
編輯:這是鏈接的問題,當python試圖加載編譯(和錯誤鏈接)模塊時產生的錯誤。不在編譯時。
編輯:這裏是編譯日誌
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o build/debug/objects/alve/layouter/flowing_data.os -c -std=c++0x -g -I/usr /include/python2.7 -fPIC -I/opt/cairo_new/include/cairo/ -I/opt/boost_1_48_0/include -DMIC_RT_SPEED_BACKS -Icsrc csrc/alve/layouter/flowing_data.cpp
g++ -o build/debug/objects/alve/layouter/liblayouter.so -L/opt/cairo_new/lib -L/opt/boost_1_48_0/lib -shared build/debug/objects/alve/layouter/flowing_data.os build/debug/objects/alve/layouter/show_network.os -Lbuild/debug/lib -Llibdeps
Install file: "build/debug/objects/alve/layouter/liblayouter.so" as "build/debug/lib/liblayouter.so"
g++ -o build/debug/objects/alve/layouter/liblayouter_mod.so -L/opt/cairo_new/lib -L/opt/boost_1_48_0/lib -shared build/debug/objects/alve/layouter/module.os Lbuild/debug/lib -Llibdeps -lboost_python build/debug/objects/alve/layouter/liblayouter.so -lcairo -lX11 -lGL -lGLU -lXext
scons: done building targets.
,這裏是該函數的調用:
glXMakeCurrent (dpy, win, ctx);
這個問題缺乏重要信息,就像清楚地指出這是針對Python導入模塊。所需信息:源代碼大綱,構建配置(Makefile或類似),**編譯器**標誌和全套鏈接器標誌。 – datenwolf
@datenwolf我的問題是「什麼是正確的方式鏈接反對glx在Linux中......」如果答案需要整個世界作爲參數...以及我會在這種情況下標記它「哈斯克爾」。 – dsign
鏈接GLX的正確方法是將libGL.so添加到您的鏈接庫集 - 您已經完成了 - 如Linux OpenGL ABI(可在OpenGL網站上找到)中所述。但編譯後的二進制文件會動態鏈接到另一個程序中,因此必須採取特殊的預防措施。哪些取決於目標程序。 – datenwolf