如何导入<chrono>以使用 avr-gcc

How to import <chrono> to work with avr-gcc

本文关键字:chrono gt avr-gcc lt 何导入 导入      更新时间:2023-10-16

根据使用&lt; chrono&gt;作为裸机微控制器的计时器?易于使用MicroController的STD :: Chrono。

我的问题是AVR-GCC(AVR微控制器的GCC)已禁用Chrono(以及许多其他C 功能)。如何将Chrono与AVR-GCC一起使用?

不同的选项:

1.-复制std :: Chrono for GCC的另一个版本。

2.-写我自己的STD :: Chrono。

3.-忘记std :: Chrono并以C方式阅读时间。

4.- ... ???

  1. 复制std :: Chrono for GCC的另一个版本。

这对您无济于事,因为有一些™依赖关系。在x86_64上:

echo '#include <chrono>' | g++ -fsyntax-only -xc++ - -H

将打印一些标题:

. /install/gcc-8-host/include/c++/8.0.1/chrono
.. /install/gcc-8-host/include/c++/8.0.1/ratio
... /install/gcc-8-host/include/c++/8.0.1/type_traits
.... /install/gcc-8-host/include/c++/8.0.1/x86_64-linux-gnu/bits/c++config.h
..... /install/gcc-8-host/include/c++/8.0.1/x86_64-linux-gnu/bits/os_defines.h
...... /usr/include/features.h
....... /usr/include/x86_64-linux-gnu/sys/cdefs.h
........ /usr/include/x86_64-linux-gnu/bits/wordsize.h
........ /usr/include/x86_64-linux-gnu/bits/long-double.h
....... /usr/include/x86_64-linux-gnu/gnu/stubs.h
........ /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
..... /install/gcc-8-host/include/c++/8.0.1/x86_64-linux-gnu/bits/cpu_defines.h
... /install/gcc-8-host/include/c++/8.0.1/cstdint
.... /install/gcc-8-host/lib/gcc/x86_64-linux-gnu/8.0.1/include/stdint.h
..... /usr/include/stdint.h
...... /usr/include/x86_64-linux-gnu/bits/libc-header-start.h
...... /usr/include/x86_64-linux-gnu/bits/types.h
....... /usr/include/x86_64-linux-gnu/bits/wordsize.h
....... /usr/include/x86_64-linux-gnu/bits/typesizes.h
...... /usr/include/x86_64-linux-gnu/bits/wchar.h
...... /usr/include/x86_64-linux-gnu/bits/wordsize.h
...... /usr/include/x86_64-linux-gnu/bits/stdint-intn.h
...... /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h
.. /install/gcc-8-host/include/c++/8.0.1/limits
.. /install/gcc-8-host/include/c++/8.0.1/ctime
... /usr/include/time.h
.... /install/gcc-8-host/lib/gcc/x86_64-linux-gnu/8.0.1/include/stddef.h
.... /usr/include/x86_64-linux-gnu/bits/time.h
..... /usr/include/x86_64-linux-gnu/bits/timex.h
...... /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h
.... /usr/include/x86_64-linux-gnu/bits/types/clock_t.h
.... /usr/include/x86_64-linux-gnu/bits/types/time_t.h
.... /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h
.... /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h
.... /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h
.... /usr/include/x86_64-linux-gnu/bits/types/timer_t.h
.... /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h
.... /usr/include/x86_64-linux-gnu/bits/types/locale_t.h
..... /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h
.. /install/gcc-8-host/include/c++/8.0.1/bits/parse_numbers.h

这些都不是用AVR-G 分发的,因为libstdc -v3被禁用了AVR。

此外,取决于您使用的功能,您需要模块,例如libstdc -v3/src/c 11/chrono.cc,它拖略了进一步的依赖性,特别是从假定的基础操作系统中,您不喜欢的基础操作系统使用AVR-G (裸金属)。

  1. 写我自己的STD :: Chrono。

这将有什么好处?您可以从某些主机计算机复制paste代码,它应该在没有任何问题的情况下工作吗?

  1. 忘记std :: Chrono,然后以C方式阅读时间。

imo,唯一合理的方法。您想控制系统资源。