【问题标题】:How can i link my c++ program statically with libstdc++ on osx using clang?如何使用 clang 将我的 c++ 程序与 osx 上的 libstdc++ 静态链接?
【发布时间】:2014-06-21 17:24:56
【问题描述】:

我正在编写 c++ 程序,我想在 Mac OS X 10.6 及更高版本上分发它。问题是当我用 clang 编译程序并且它与 libstdc++ 动态链接时,它会导致旧系统出现问题。

在 gcc 中有一个密钥 -static-stdc++,但在 clang 中没有。如何将我的程序与 clang 静态链接?

我的主要目标是在 Mac OS X 10.9 上编译二进制文件并能够在早期版本上运行它。也许有不同的方式?

谢谢。

【问题讨论】:

    标签: c++ macos clang static-linking libstdc++


    【解决方案1】:

    在 Linux 下,此命令有效:

    clang --std=c++11 -stdlib=libstdc++ loopy.cpp -o loopy -static -lstdc++
    

    loopy 当然是我的程序的名称。

    更新:

    似乎Apple strongly discourages static linking 表明需要另一种方法。

    This answer 关于创建向后兼容的 OS X 软件可能对您有用。

    【讨论】:

    • 这在 Mac OSX 上不起作用:ld: library not found for -lcrt0.o
    • 您需要所有库的静态版本,包括libcrt0.a。有关详细信息,请参阅this answer
    • 应该可以静态链接libc++而不用静态链接libc。不鼓励静态链接的理由不适用于 libc++;仅适用于 libSystem。
    • @andrewrk 但是如何静态链接 libc++?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多