0
라즈베리 PI의 pow() 문제가 있습니다. 나는 이것을 사용하여 간단히 GPIO 핀을 다음과 같이 바꿨다.라즈베리 PI의 전원 기능
*((unsigned int *)(GPIO_PIN_ON)) = (1 * pow(2,16)); // 1 << 16
GPIO_PIN_ON은 맨 위에 정의한 상수이다. 이것은 잘 작동합니다.
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'
: 나는 심지어 "math.h"과) 다른 파일 및 사용 펑 (에서 "GPIOsetFunction()"할 때조차 "Math.h"를 포함 할 필요가 있지만하지 않는 라이브러리 그것은 나에게 오류를 제공합니다
여기서 pow()가 정의되지 않음을 나타냅니다. 누군가 제발 나를 도울 수 있습니까?
P.S : BakingPI 자습서를 Assembly에서 C로 변환하고 Shift 연산자를 사용하지 않으려합니다.
다음은 "math.h"없이 "-lm"없이 성공적으로 실행되는 코드이며 "-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
}
'ld'을 (를) 사용하여 프로그램을 직접 연결 하시겠습니까? ouah에 의한 응답 외에'gcc'를 사용하여 링크하십시오. – nos
왜 비트 시프트를 사용하지 않으시겠습니까? – ouah
비트 단위 이동을 사용하지 않아야한다는 요구 사항입니다. 나는 그것을 성공적으로했다. 더 많은 질문을 추가하십시오. –