当我使用make编译RaspberryPi的源代码时,将发生如下错误:
“ bmp180.c :(。text + 0xe8):对'bcm2835_i2c_write'的未定义引用”

但是,我使用了“ -l bcm2835”,makefile如下:

#makefile

bmp: main.o bmp180.o
    gcc -o bmp main.o bmp180.o

main.o: main.c bmp180.h
    gcc -c main.c -l bcm2835.h

bmp180.o: bmp180.c bmp180.h
    gcc -c bmp180.c -l bcm2835.h


clear:
    rm -f main.o bmp180.o

最佳答案

您的Makefile中有-l bcm2835.h。库的名称只是bcm2835。以.h结尾的文件是要在您的C源代码中#include的文件;它们不是动态共享库。

另外,在链接阶段而不是编译阶段需要共享库。您将需要在链接步骤中添加-l bcm2835

bmp: main.o bmp180.o
    gcc -o bmp main.o bmp180.o -l bcm2835


编译步骤中的-l参数实际上是无操作的(但它们不会造成任何伤害)。

09-06 18:38