1
我在編譯multiple definition of
大量變量時出現錯誤。例如:`多重變量`很多變量錯誤 - 我的make文件不正確?
/tmp/ccwHwJ7t.o:(.data+0x0): multiple definition of `serial_number'
/tmp/ccmT1XNI.o:(.data+0x0): first defined here
所有的變量都位於ftdi.h
,這是由main.c
包括在內。我的make文件有什麼問題導致它包含兩次?或者我正在看錯方向。
SSHELL = /bin/sh
CC = gcc
APP = npi_usb_ftdi
INC = include
INCDIRS +=-I${INC}
CFLAGS= ${INCDIRS} -Wall -Wextra
LIBS = libftd2xx.a -ldl -lpthread -lrt
all: ${APP}
${APP}: src/main.c src/ftdi.c src/vt100.c src/monitor.c
${CC} ${CFLAGS} src/main.c src/ftdi.c src/vt100.c src/monitor.c -o ${APP} ${LIBS}
ftdi.o:
${CC} -c -o src/ftdi.o src/ftdi.c
vt100.o:
${CC} -c -o src/vt100.o src/vt100.c
monitor.o:
${CC} -c -o src/monitor.o src/monitor.c
clean:
rm -f src/*.o ; rm -f src/*~ ; rm -f *~ ; rm -f ${APP}
首先,永遠不要在頭文件中放置變量/函數定義。其次,在編寫頭文件時總是使用頭文件('#ifndef FOO_H' ...)。 – Lundin
'ftdi.h'是否也包含在'ftdi.c'或任何其他文件中? – mch
似乎已在您指向的庫中定義了'serial_number'。只是爲了檢查重命名後的變量 – Akaks