从命令行使用 clang 编译:兼容性问题 mac os X
Posted
技术标签:
【中文标题】从命令行使用 clang 编译:兼容性问题 mac os X【英文标题】:compile with clang from the command line: compatibility issues 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
【问题讨论】:
【参考方案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++。我会试试这个,谢谢。以上是关于从命令行使用 clang 编译:兼容性问题 mac os X的主要内容,如果未能解决你的问题,请参考以下文章
安装了 Xcode 命令行工具的 Mac OS X 中的 clang-format 和 clang-format.py 在哪里?