【问题标题】:compile with clang from the command line: compatibility issues mac os X从命令行使用 clang 编译:兼容性问题 mac os X
【发布时间】:2015-07-25 14:26:32
【问题描述】:

我正在使用 cmake、clang++、boost 和 openCV 在 MacOsX10.10 上编译一个 c++14 项目(静态链接 - 编译标志:-Wall -std=c++14 -O3)。如何确保程序在旧 MacOsX 版本中开箱即用? (以及在其他 mac 计算机中?)我已经在运行 os X 10.7 的旧 macbook 上测试了二进制文件,但它失败了。使用 xcode 可以针对某些特定的 SDK 构建程序,我可以从命令行执行类似的操作吗?

附:这是一个更普遍的问题,但可以在此处找到此特定项目的源代码:https://github.com/MarinosK/oiko-nomic-threads

【问题讨论】:

    标签: c++ macos c++14 clang++


    【解决方案1】:

    您需要确保所有依赖项都静态链接到您的可执行文件中。所以这不仅包括 .a(静态库或对象档案),还包括 C++(可能还有 C)标准库。

    例如:

    clang --std=c++14 -stdlib=libstdc++ main.cpp -o main thirdparty.a -static -lstdc++
    

    【讨论】:

    • 我认为苹果不鼓励针对 stdc++ 的静态链接。根据link 的说法:“Apple 不支持 Mac OS X 上的静态链接二进制文件。静态链接二进制文件假定内核系统调用接口的二进制兼容性,我们在这方面不做任何保证。相反,我们努力确保每个动态链接的系统库和框架中的二进制兼容性。”我还在某处读到苹果即将放弃对 libstdc++ 的支持,转而支持 libc++。我会试试这个,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2010-11-07
    • 2016-01-05
    • 2014-02-04
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    相关资源
    最近更新 更多