4

我正在尝试让一些较旧的第三方软件在 OS X 10.9 上进行编译。通过调整 Makefile 中的设置,我已经设法摆脱了大多数编译问题,这些设置最初可能是在 2005 年左右为gcc编写的。但是,我目前不知道如何克服 C++ 源文件的这个错误:

/utility.h:42:10:致命错误:找不到“ext/slist”文件

我知道这ext/slist属于某些版本的STL。该版本是否已被取代,或者是否必须以任何特殊方式激活 Apple 的 Clang/ LLVM版本(OS X 10.9 为 5.0)?

如果可能的话,我宁愿用预装的工具编译这个软件,而不是通过 MacPorts安装gcc等步骤。

顺便说一句,这些警告也持续存在:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2:警告:不推荐使用标头。迁移到 [-W#warnings] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2:警告:使用标头已弃用。迁移到 [-W#warnings]

4

1 回答 1

5

Slist 是一个单链表,是 libstdc++ 中的一个扩展。Mac OS X 一直在从 libstdc++ 转向提供 C++11 标准库的 libc++。C++11 在 header 中提供了一个名为 std::forward_list 的单链表<forward_list>

我相信 libstdc++ 仍然包含在开发人员工具中,因此您也可以将您的项目切换回该工具。如果您使用的是 Xcode 项目,您可以在构建设置中选择库,或确保使用 -stdlib=libstdc++ 构建程序

于 2013-11-03T21:46:09.810 回答