基础环境是什么?
上回说到,通过一点手段,我们成功启用了 C++ 的支持。但是,这样的支持并不完善,我们的内核到目前为止,还没有一个 C 运行库(libc),更别提 C++ 标准库(libc++)了。这就意味着,所有需要用的函数和类都要手写一份,非常折磨人。所以,引入 C 和 C++ 基础库是接下来要做的事。
嵌入式里边,最常用的 libc 是 newlib, 而 C++ 的实现则可以使用 libsupc++。
动工
之前的编译里边,为了最小化库的引入,我加入了一个编译参数:-nostdlib
。这个参数指示 gcc 不要链接标准库。所以要引入标准库,第一步就是把这个参数去掉,但是又不能引入默认的 crt 初始文件,所以还得加上 -nostartfiles
,然后测试编译器的支持。很不幸地,我只写了一句:
2024年3月9日大约 8 分钟