Обычно это часть работы по переносу реализации libc на новую платформу. Когда вы компилируете копию glibc или newlib (две самые популярные реализации стандартной библиотеки C), вам необходимо предоставить ряд методов заглушки, один из которых будет обеспечивать время. gcc-arm-none-eabi
- это цель, предопределенная в newlib, которая реализует много этих заглушек, но не те, для получения времени, потому что, как вы сказали, это специфические приложения.
Лучшее, что нужно сделать, - это построить инструментальную цепочку самостоятельно, реализуя этот метод. Вы можете следовать инструкциям here, но перед тем, как вы создадите newlib, измените цель, чтобы заполнить эту заглушку. Имеется хорошая ссылка на реализацию заглушек here.
В качестве альтернативы вы можете реализовать свою собственную функцию clock
, когда вы связываете приложение, оно предпочтет вашу версию над той, что находится в библиотеке. Однако будьте осторожны, это означает, что все, что в библиотеке, которая вызывает clock
, по-прежнему будет называть сломанную версию библиотеки, поэтому вам может потребоваться переопределить множество функций.
[Возможно, вы найдете это полезным.] (Https://github.com/libopencm3/libopencm3/blob/master/lib/stm32/timer.c) – 2013-02-22 17:53:37
@ H2CO3: Я не так много спрашиваю _ "как я получаю системные часы? »_, поскольку я -« Учитывая, что могу получить системные часы, как мне связать их с заголовком 'time.h'?» _ – Eric
В этом случае: вам нужно повторно реализовать 'clock()' функция. – 2013-02-22 17:59:27