所以我安装了BCM2835但是当我尝试使用“gcc -c main main.c”编译.c文件时,它会出现以下错误。我不知道如何编译linux btw,只需按照互联网上的内容。
/tmp/ccSVwHkt.o: In function `main':
main.c:(.text+0x14): undefined reference to `bcm2835_init'
main.c:(.text+0x3c): undefined reference to `bcm2835_gpio_fsel'
main.c:(.text+0x48): undefined reference to `bcm2835_gpio_write'
main.c:(.text+0x50): undefined reference to `bcm2835_delay'
main.c:(.text+0x5c): undefined reference to `bcm2835_gpio_write'
main.c:(.text+0x64): undefined reference to `bcm2835_delay'
collect2: ld returned 1 exit status
这是main.c的内容(从Google代码中复制)
/*
* main.c
*
* Created on: 23-jun.-2013
* Author: Andreas Backx
*/
#include <bcm2835.h>
// Blinks on RPi Plug P1 pin 11 (which is GPIO pin 17)
#define PIN RPI_GPIO_P1_11
int main(int argc, char **argv)
{
// If you call this, it will not actually access the GPIO
// Use for testing
// bcm2835_set_debug(1);
if (!bcm2835_init())
return 1;
// Set the pin to be an output
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
// Blink
while (1)
{
// Turn it on
bcm2835_gpio_write(PIN, HIGH);
// wait a bit
bcm2835_delay(500);
// turn it off
bcm2835_gpio_write(PIN, LOW);
// wait a bit
bcm2835_delay(500);
}
bcm2835_close();
return 0;
}
答案 0 :(得分:8)
gcc -c main main.c
没有意义。也就是说,如果你真的在做什么,你需要改变它:
gcc -o main main.c
您可能仍会从链接器中获取“未定义的符号”错误,因为您没有链接任何定义这些符号的库。快速检查您链接的网站上的示例,表明您需要与bcm2835
库链接:
gcc -o main main.c -lbcm2835
如果您在-L
无法查找的地方安装了库,则可能还需要添加gcc
标记。
答案 1 :(得分:0)
我会告诉你一个更简单的选择,这样你就不必担心每次都写这个命令了。
gcc -Wall -c "% f"
。gcc -Wall -c "% f" -lbcm2835
。gcc -Wall -o "% e" "% f" -lbcm2835
。sudo "./%e"
然后按确定。 现在一切都会好起来的 ;)