Emulator Issues #3596
closedCmake compiling error in Debian sid (patch included)
0%
Description
What's the problem?
Seems like the new change to DSO linking (http://fedoraproject.org/wiki/UnderstandingDSOLinkChange) was commited upstream or something and already reached Debian sid therefore all other debian-based distro may be affected soon.
When compiling with cmake I get:
[100%] Building CXX object Source/Core/DolphinWX/CMakeFiles/dolphin-emu.dir/Src/X11Utils.cpp.o
Linking CXX executable ../../../Binaries/dolphin-emu
/usr/bin/ld: ../Common/libcommon.a(DynamicLibrary.cpp.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
/usr/bin/ld: note: 'dlclose@@GLIBC_2.2.5' is defined in DSO /lib64/libdl.so.2 so try adding it to the linker command line
/lib64/libdl.so.2: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[3]: *** [Binaries/dolphin-emu] Error 1
After adding -ldl to a CMakeList.txt file a different library is then asked. To fix this I used this quilt patch:
--- dolphin-emu-2.0+svn6495.orig/Source/Core/Core/CMakeLists.txt
+++ dolphin-emu-2.0+svn6495/Source/Core/Core/CMakeLists.txt
@@ -145,6 +145,10 @@ if(PORTAUDIO_FOUND)
set(LIBS ${LIBS} portaudio)
endif(PORTAUDIO_FOUND)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
- set(LIBS ${LIBS} -ldl -lX11 -lgtk-x11-2.0 -lgdk-x11-2.0 -lgobject-2.0)
+endif()
add_library(core STATIC ${SRCS})
target_link_libraries(core ${LIBS})
With this the error is fixed in Debian sid 64bit and it is backwards compatible with Ubuntu Lucid/Maverick 32/64bit where this problem is still not present.
Dolphin version with the problem (as it appears in the title bar, Ex.: "R
4779" or "R 6403M"):
Latest svn.
I first noticed when I tried to use cmake for the 1st time (r6403).
Operating system and version:
Debian Sid 64-bit
Build command-line (not on Windows):
(cd Build && cmake -DCMAKE_INSTALL_PREFIX=/usr -DDOLPHIN_WC_REVISION=6495 ..)
...
(cd Build && /usr/bin/make -j2)
Please provide any additional information below.
This is similar to Issue 2820. I used scons to avoid this problem but after Issue 3595, I decided to just create a small patch for cmake and report it.