首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在我的内核中使用STLPort?

如何在我的内核中使用STLPort?
EN

Stack Overflow用户
提问于 2011-09-19 19:39:55
回答 3查看 1.4K关注 0票数 3

我正在用C++开发一个内核。但我不想写stdlib;为此,我下载了STLport http://www.stlport.org/,但我不知道如何安装和使用它。

我使用Linux来构建我的内核。

如何在内核中使用c++标准库?

而且我不想从STLport移植所有的库。如何排除选定的库?如std::stringstd::vector等。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-20 00:15:53

为了让STL工作,你必须移植一些东西,比如静态初始化(比如std::cin和std::cout)和堆栈展开……

您必须移植libsupc++,并将其放入内核中。基本上,所有这些东西从一开始就不应该在内核中。不要使用向量,使用静态数组,因为向量可能会重新分配数据!

而且,所有这些东西都会让你的内核毫无意义地膨胀!

你可以看看L4允许自己在内核中使用什么。它们不做内存分配,也不做异常(不可预测),特别是不做STL。

后面的链接将使您了解需要移植哪些内容才能获得c++操作系统支持。Libsupc++是gcc的一部分。它的目的是封装所有需要运行时代码的部分。

Useful information about libsupc++

Useful information about c++ operating system support

票数 3
EN

Stack Overflow用户

发布于 2011-09-19 20:57:11

我可能会建议不要在内核开发中使用STL。STL将假定某种形式的标准库支持,这在您的内核中是没有的。而且,大多数内存分配操作都没有时间限制,因此不适合在中断处理程序中使用。异常是另一件会在内核中引起严重问题的事情

票数 3
EN

Stack Overflow用户

发布于 2012-10-08 21:03:18

我不确定内核中的STL是否真的值得拥有,但如果你真的想尝试一下,它是非常有趣的。我已经编写了自己的操作系统,当我在内核中分配内存时,我做的第一件事就是移植STLport (5.2.1)。到目前为止,它工作得很好,尽管内核本身还太初级。

无论如何,我可以分享一些移植它的经验。

  1. 移植STLport不需要构建,也不需要很少的先决条件,只需要包括头文件并让编译器知道它的路径(对于gcc来说是-I选项)。模板类将使用cpp源文件进行编译。

  1. STLport是可配置的,您可以禁用您负担不起的,并选择您想要的,如iostream,debug,exception,RTTI和线程。只需查看文档,然后转到配置头,它的注释非常好(例如stlport/stl/config/user_config.h)

作为最基本的

  • ,你将需要mallocfree,或者newdelete和变种。这足以移植std字符串、容器和算法,IIRC。但它既不是线程安全的,也不是优化的内存分配,当你依赖它时,你需要非常小心。

  1. 你可以做你自己的iostream,它只是模板类和全局对象(顺便说一句,我修改了ELF部分,并通过调用函数手动初始化了全局对象),但这需要更多的工作。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7470346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档