"undefined reference to" 问题解决方法:
三个c文件:common.h,awb_main.c,image_isp_3516a.c
common.h中包含所必需的头文件与image_isp_3516a.c中函数的声明;
awb_main.c中包含common.h、主函数main,main中调用image_isp_3516a.c中的函数;
image_isp_3516a.c中包含common.h、一些函数的具体实现。
编译生成可执行文件awb,拷贝到相应目录下运行:
awb: awb_main.o
$(CC) $(CFLAGS) -lm -lpthread -o $@ $^ $(SENSOR_LIBS) $(MPI_LIBS) $(AUDIO_LIBA)
cp -f awb /nfsroot/AppTest/UV950A/
此时编译器报错:
awb_main.o: In function `main':
awb_main.c:22: undefined reference to `isp_metering_hist_0_read()'
collect2: ld returned 1 exit status
其中isp_metering_hist_0_read()为image_isp_3516a.c中的函数。
解决方法:
awb: awb_main.o image_isp_3516a.o
$(CC) $(CFLAGS) -lm -lpthread -o $@ $^ $(SENSOR_LIBS) $(MPI_LIBS) $(AUDIO_LIBA)
cp -f awb /nfsroot/AppTest/UV950A/
问题解决,编译正确,可以正确运行。