我在Raspberry PI中的pow()有问题。我用了它,只是像这样转动gpio针:

*((unsigned int *)(GPIO_PIN_ON)) = ( 1 * pow(2,16) ); // 1 << 16


GPIO_PIN_ON是我在顶部定义的常数。这很好。我什至不必包括“ Math.h”,但是当我在其他文件中创建“ GPIOsetFunction()”并使用pow()甚至与“ math.h”库一起使用时,也会出现此错误:

gpio.c:(.text+0x38): undefined reference to `__aeabi_i2d'
gpio.c:(.text+0x48): undefined reference to `__aeabi_i2d'
>> gpio.c:(.text+0x64): undefined reference to `pow'
gpio.c:(.text+0x80): undefined reference to `__aeabi_dmul'
gpio.c:(.text+0x94): undefined reference to `__aeabi_d2iz'


这里表明pow()是未定义的。有谁可以帮助我吗。

P.S:我正在将BakingPI教程从Assembly转换为C,并且我不想使用Shift运算符。

以下是我在没有“ math.h”和“ -lm”且没有解决方案的情况下成功运行的代码,以及如何运行此代码? (这是BAKING-PI教程的OK-02的完整代码)

P.S2:我正在使用YAGARTO编译器。

#include <sys/types.h>

void main(void);

#define GPIO_BASE 538968064 //0x20200000
#define GPIO_PIN_FUNC (GPIO_BASE+4)
#define GPIO_PIN_ON (GPIO_BASE+28)
#define GPIO_PIN_OFF (GPIO_BASE+40)

void main(void) {
register int counter = 0;
*((unsigned int *)(GPIO_PIN_FUNC)) = ( 1 * pow(2,18) ); //1 << 18
while (1 == 1) {    // forever
    *((unsigned int *)(GPIO_PIN_OFF)) = ( 1 * pow(2,16) ); //1 << 16
    counter = 4128768; //0x3f0000;
    while (counter--);
    *((unsigned int *)(GPIO_PIN_ON)) = ( 1 * pow(2,16) ); // 1 << 16
    counter =  4128768; //0x3f0000;
    while (counter--);
}
// should never get here
}

最佳答案

您必须与数学库链接。将-lm附加到您的编译(链接)命令行中。

关于c - Raspberry PI中的幂函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24259507/

10-15 05:23