【发布时间】:2013-03-02 02:49:13
【问题描述】:
我需要编译与 libstdc++ 静态链接的 OpenCV,以避免 Qt5 和 OpenCV 所需的 libstdc++-6.dll 的不同 dll 版本的问题。按照本文的步骤:http://www.argong.com/docs/how-to-OpenCV-2.2.0.pdf 并将下面的行添加到 CMakeLists.txt 我希望获得与 libstdc++ 静态链接的 OpenCV DLL,但 OpenCV 继续依赖于 libstdc++-6.dll。让 OpenCV 库与 libstdc++ 静态链接,我做错了什么?
if (MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -static-libgcc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libgcc -static-libstdc++")
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_C_FLAGS} -static-libgcc -s")
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS} -static-libgcc -static-libstdc++ -s")
endif()
【问题讨论】:
-
你尝试编译哪个版本?
-
OpenCV 2.4.4 与 CMake 2.8.10 和 MinGW 4.7
-
我有一个类似的问题:我使用 -static-libdstdc++,但结果仍然包含 DLL,所以感觉 -static 命令行选项没有做它应该做的事情。我还得到了 gcc DLL,并且 -static 选项本身也没有效果......我检查了 VERBOSE 以确保它会出现在链接器的命令行上,它确实......我们做错了什么?
-
mingw 可能没有该选项有效,前几天我在文章中读到,其中任何一个选项都需要特定版本的 gcc(可能接近 4.8)