作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在移植应用程序从 BSD 平台到 Linux 机器。编译时,我发现一些头文件调用了<bits/stl_alloc.h>
。 ,我的电脑上没有。有谁知道我在哪里可以找到它和/或为什么它不见了?
我正在运行带有 GCC4.4.4 的 Fedora 12 机器。
最佳答案
您的错误消息显示 bits 目录中的文件丢失。为此可能会导致两种可能的方式:
您明确地从您的应用程序中包含了这个文件。那是你的错,因为它不是标准的 header ,而且它可能不在你的标准包含路径中。你应该避免这样做。大多数与操作系统交互的必要机制都在标准库中(或在其他专门为可移植性设计的库中),因此您有比使用特定 STL 实现的位更好的解决方案。
此文件间接包含在 STL 的一些标准头文件中。问题是 Fedora 上的 STL 实现可以是可移植的,并且可以有一些 BSD 支持。它的 header 中可能包含以下代码:
#ifdef __BSD__
// BSD-specific include file
#include <bits/stl_alloc.h>
#elsif defined __LINUX__
#include <bits/linux_alloc.h>
#endif
通常,在 Linux 上开发的程序会包含正确的文件。但是,您的程序可能已经自己定义了 BSD 指纹,并且该指纹可能会被 STL 实现误解为它应该包含其特定于 BSD 的部分。如果您仅在 BSD 上构建它,您根本不会注意到它。
关于C++ - Fedora 12 上的 GCC4.4.4 缺少 STL_alloc.h?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3471354/
我正在移植应用程序从 BSD 平台到 Linux 机器。编译时,我发现一些头文件调用了。 ,我的电脑上没有。有谁知道我在哪里可以找到它和/或为什么它不见了? 我正在运行带有 GCC4.4.4 的 Fe
我是一名优秀的程序员,十分优秀!