当我使用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
参数实际上是无操作的(但它们不会造成任何伤害)。