我试图让一些旧的第三方软件在OS X 10.9上编译.我已经设法通过调整Makefile中的设置来摆脱大多数编译问题,这些设置最初是在2005年左右为
gcc编写的.但是,我目前还不知道如何克服C源文件的这个错误:
/utility.h:42:10: fatal error: ‘ext/slist’ file not found
我知道ext / slist属于STL的某个版本.该版本是否被取代或是否必须以Apple的版本Clang / LLVM(OS X 10.9为5.0)以任何特殊方式激活?
如果可能的话,我更愿意使用预安装的工具编译该软件,而不是通过安装gcc via MacPorts这样的步骤.
顺便说一句,这些警告也持续存在:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_set:202:2:
warning:
Use of the header is deprecated. Migrate to
[-W#warnings] /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ext/hash_map:209:2:
warning:
Use of the header is deprecated. Migrate to
[-W#warnings]
解决方法
Slist是一个单独的链表,是libstdc中的扩展名. Mac OS X已经从libstdc转向libc,后者提供了一个C 11标准库. C 11在头部< forward_list>中以名称std :: forward_list提供单链表.
我相信libstdc仍然包含在开发人员工具中,因此您也可以将项目切换回来.如果您正在使用Xcode项目,则可以在构建设置中选择库,或者确保使用-stdlib = libstdc构建程序