如何在 cmake 中静态链接到 glibc



我正在尝试从Fedora构建一个可以在RedHat 6机器上运行的软件包。所以我需要与一些 RedHat 机器中不存在的库构建和静态链接。

我发现我可以-static-libgcc-static-libstdc++链接到标准库的静态版本,但我不知道如何处理glibc

如何使用 CMake 链接到静态glibc库?

我知道这个问题提到了glibc但对于C++,由于-static-libgcc-static-libstdc++是链接器选项,因此在CMake中设置它们的正确方法是使用target_link_libraries()

因此,您可以像这样设置它,其中MyLibrary是项目的名称:

target_link_libraries(MyLibrary -static-libgcc -static-libstdc++)

鉴于此,如果您想要glibc的完整静态链接,您同样会传递 -static 标志。

target_link_libraries(MyLibrary -static)

如果需要更多全局设置:

set(BUILD_SHARED_LIBS OFF)
set(CMAKE_EXE_LINKER_FLAGS "-static")

但是,请记住,glibc不是为静态链接而设计的,如果没有大量的额外工作,您最终不会得到一个真正的静态包。您构建"可以在 RedHat 6 机器上运行的 Fedora 软件包"的用例不会通过静态链接glibc来轻松工作。

相关内容

  • 没有找到相关文章

最新更新