【问题标题】:Create a .so file with everything statically linked(include libc) in CMake在 CMake 中创建一个包含所有静态链接(包括 libc)的 .so 文件
【发布时间】:2019-04-04 23:12:53
【问题描述】:

我想创建一个与 musl libc(或其他一些 libc)静态链接的 .so 共享对象。这样其他人就可以在运行时动态链接我的 .so 文件,而不必担心他们的平台上有某些 libc。这可能吗 ?如果是这样,我如何在 CMake 中实现这一点?

【问题讨论】:

    标签: c cmake cross-compiling


    【解决方案1】:

    您应该能够通过静态链接到共享库中的依赖库并将此类链接设为私有(即target_link_libraries(MyLib PRIVATE dependencies...))来实现此目的。

    然后,您必须确保任何依赖库的任何部分都不会暴露给共享库的使用者(包括任何标头都算作暴露)。 PImpl 技术可能对您有用。

    【讨论】:

    • 我需要在 target_link_libraries 中添加 'libc' 吗?像 target_link_libraries(MyLub PRIVATE libc.so)
    • 您可能需要使用 cmake 目标(如果可能)。此外,libc 库必须是静态构建的,并且没有其他外部依赖项才能正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    相关资源
    最近更新 更多