如何导入 以使用avr-gcc

问题描述 投票:0回答:1

Using <chrono> as a timer in bare-metal microcontroller?易于在微控制器上使用std :: chrono。

我的问题是avr-gcc(用于avr微控制器的gcc)已禁用chrono(以及许多其他c ++功能)。如何在AVR-GCC中使用chrono?

不同选项:

1.-将std :: chrono复制到gcc的另一个版本。

2.-编写我自己的std :: chrono版本。

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

4.- ... ???

c++ time timer chrono avr-gcc
1个回答
0
投票
  1. 将std :: chrono复制到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版本。

这会有什么好处?您只需要从某台主机复制粘贴代码就可以了,应该可以正常工作吗?

  1. 忘记std :: chrono并以C方式读取时间。

IMO,唯一可行的方法。您想控制系统资源。

© www.soinside.com 2019 - 2024. All rights reserved.