我正在尝试在OS X 10.9上编译一些较旧的第三方软件。我已经设法通过调整Makefile中的设置来摆脱大多数编译问题,这些设置最初是为2005年的 gcc 编写的。但是,我目前还不知道如何克服这个错误C ++源文件:
/utility.h:42:10:致命错误:'ext / slist'文件未找到
我了解ext/slist
属于STL的某个版本。该版本是否被取代或是否必须以Apple的版本Clang / LLVM(OS for OS X 10.9)以任何特殊方式激活?
如果可能的话,我更愿意使用预安装的工具编译此软件,而不是执行安装gcc via MacPorts等步骤。
顺便说一句,这些警告也会持续存在:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin /../ LIB / C ++ / V1 / EXT /的hash_set:202:2: 警告: 不推荐使用标头。迁移到 [-W#警告] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2: 警告: 不推荐使用标头。迁移到 [-W#警告]
答案 0 :(得分:5)
Slist是一个单独链接列表,是libstdc ++中包含的扩展。 Mac OS X已经从libstdc ++转向libc ++,它提供了一个C ++ 11标准库。 C ++ 11在标题<forward_list>
中以名称std :: forward_list提供单链表。
我相信libstdc ++仍然包含在开发人员工具中,因此您也可以将项目切换回来。如果您正在使用Xcode项目,则可以在构建设置中选择库,或者确保使用-stdlib = libstdc ++构建程序