1

そのため、 BCM2835をインストールしましたが、「gcc -c main main.c」で .c ファイルをコンパイルしようとすると、次のエラーが発生します。Linux をコンパイルする方法がわかりません。インターネット上の情報に従ってください。

/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;
}
4

2 に答える 2

9

gcc -c main main.cあなたが得ている出力を考えると意味がありません。そうは言っても、それが本当にあなたがやっていることなら、それを変更する必要があります:

gcc -o main main.c

これらのシンボルを定義するライブラリとリンクしていないため、リンカーから「未定義のシンボル」エラーが発生する可能性があります。bcm2835リンクしたサイトの例を簡単に確認すると、ライブラリとリンクする必要があることがわかります。

gcc -o main main.c -lbcm2835

ライブラリを探す場所がわからない-L場所にライブラリをインストールした場合は、フラグを追加する必要がある場合もあります。gcc

于 2013-06-23T15:12:59.887 に答える
0

毎回このコマンドを書くことを心配する必要がないように、より簡単なオプションを紹介します。


  • Geany で作業している場合は、セクションに進み、次に . このコマンドを使用してコンパイルしていることがわかります -> gcc -Wall -c "% f"
  • 所定の位置に置きgcc -Wall -c "% f" -lbcm2835ます。
  • そして行で -> gcc -Wall -o "% e" "% f" -lbcm2835.
  • そしてその行で - >sudo "./%e"

そしてOKを押します。これですべてが機能します;)

于 2021-06-30T05:53:44.707 に答える