Closed akien-mga closed 8 years ago
I'm a little bit confused, because I use static libs to link the binary. I've just split up the codebase into modules but still only have one binary, no shared libs.
diff --git a/cmake/toolchains/linux-toolchain.cmake b/cmake/toolchains/linux-toolchain.cmake index 71f16a0..a15c1f1 100644 --- a/cmake/toolchains/linux-toolchain.cmake +++ b/cmake/toolchains/linux-toolchain.cmake @@ -62,3 +62,4 @@ set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG -fno-omit-frame-pointer set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS} -Wnon-virtual-dtor") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${CMAKE_C_FLAGS_RELEASE}") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${CMAKE_C_FLAGS_DEBUG}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1 -Wl,--build-id -W")
Applying this patch also didn't reveal any problems
Hm, I guess the issue appears only when using -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF
, which is default in Mageia's %cmake
macro.
I'll investigate a bit more asap. I agree that building the modules as shared libs is not particularly meaningful here though, so I'll probably disable our default -DBUILD_SHARED_LIBS=ON
to package caveexpress.
Can this be closed? Or do you still have any issues with it?
I still need to give it a try, thanks for the reminder. I think that the proper fix here though would be to force static linking instead of honouring the BUILD_SHARED_LIBS
argument.
It could likely be done by adding the STATIC
flag to the add_library
calls, or by enforcing that BUILD_SHARED_LIBS
is set to OFF
and BUILD_STATIC_LIBS
is set to ON
(with a message(STATUS ...)
telling the user that their instruction was overridden).
I'm working on packaging caveexpress for Mageia (with some inspiration from Markus Koschany who just got it packaged in Debian). Our default
%cmake
macro enforces these flags:The
-Wl,--as-needed
ldflag is notorious for finding underlinking issues, which it did (supposedly, haven't investigated much yet) in the current HEAD:libcavepacker-shared.so
:libui.so
:System: Mageia 6 x86_64, GCC 5.4.0.