我有Debian Wheezy,我需要C++ 11功能來構建我的項目。我已經從源代碼編譯了gcc(僅用於c和C++),並使用this問題將這些庫放在我的主文件夾下。我也利用這個傢伙提供的包裝腳本誰回答了這個問題這是源碼構建的gcc鏈接錯誤
$HOME/gcc/gcc-4.8.4/bin/g++ -Wl,-rpath,$HOME/gcc/gcc-4.8.4/lib32 "[email protected]"
現在,我有我在我的項目的GUI和圖形操作使用的遊戲引擎。它在32位編譯就好了。我通過-m32
切換所有它使用的外部庫和引擎本身。此外,爲了cmake的找到我的包裝,我給下面的選項,同時運行cmake的
cmake .. -DCMAKE_CXX_COMPILER=path/to/my/32-bit-wrapper
編譯後,它提供了以下鏈接錯誤回報
undefined reference to `XOpenDisplay'
undefined reference to `glBlendFunc'
undefined reference to `alGenBuffers'
起初,我以爲我可能會丟失32位開發庫,所以我安裝了以下軟件包。
- 填實libgl1檯面-dev的:I386
- libopenal-dev的:I386
- 的libx11-dev的:I386
,但我得到的錯誤,不管。那麼,我該如何解決這個問題呢?如果需要,我可以提供其他信息,如cmake文件等。先謝謝你。
編輯
CMake的情況下的文件,如果錯誤源於它
cmake_minimum_required(VERSION 2.8.3)
project(uwmf)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -m32 -DLINUX")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32 -DLINUX")
#set(CMAKE_CXX_COMPILER "${HOME_PATH}/devel/g++-4.8.4-32")
#set(CMAKE_C_COMPILER "${HOME_PATH}/devel/gcc-4.8.4-32")
message("${CMAKE_CXX_FLAGS}")
message("${CMAKE_C_FLAGS}")
message("${CMAKE_CXX_COMPILER}")
message("${CMAKE_C_COMPILER}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(GGE ${HOME_PATH}/devel/gorgon-3.x)
set(GRAPHICS ${HOME_PATH}/devel/graphics)
set(SOURCES
src/source.cpp
src/algorithms.h
src/cloud-gen.h
src/latex.h
src/macros.h
src/matrix.h
src/utils.h
)
include_directories(${GGE})
include_directories(${GRAPHICS})
add_executable(uwmf ${SOURCES})
target_link_libraries(uwmf ${GGE}/build/libGGE.a)
UPDATE
ereOn的答案的伎倆。我還必須安裝libalut-dev:i386
和鏈接(-lalut
)才能成功編譯。我得到像下面這樣的許多警告消息(可能是由於引入同一個庫的附加的鏈接)
/usr/bin/ld: Warning: type of symbol `glDrawBuffers' changed from 2 to 1 in ../devel/gorgon-3.x/build/libGGE.a(OpenGL.cpp.o)
/usr/bin/ld: Warning: type of symbol `glGetAttribLocation' changed from 2 to 1 in ../devel/gorgon-3.x/build/libGGE.a(OpenGL.cpp.o)
但這些都不是這個問題的一部分。感謝您的幫助。
您是否100%確定這些庫已被鏈接? – user3125280
對於XOpenDisplay,您需要鏈接到libX11(-lX11編譯器標誌),對於glBlendFunc,您需要鏈接到libGL,(-lGL標誌),並且對於alGenBuffers,鏈接到libopenal(-lopenal標誌)。你在做那個嗎? – nos
這些庫在遊戲引擎中靜態鏈接,我正在使用(libGGE.a)和'TARGET_LINK_LIBRARIES(GGE $ {_ lib})'。我使用這個引擎編譯了許多程序,並且從不需要明確鏈接x11,libgl等。 –