LINUX 主机使用makefile编译C程序 sqlite3函数报错
/XXX/XXX/com/src/sqlite3fun.c:155: multiple definition of `openSqlite3'
/XXX/XXX/com/obj/common.o:/XXX/XXX/com/src/sqlite3fun.c:155: first defined here
/XXX/XXX/com/obj/sqlite3fun.o: In function `execSqlite3':
/XXX/XXX/com/src/sqlite3fun.c:222: multiple definition of `execSqlite3'
/XXX/XXX/com/obj/common.o:/XXX/XXX/com/src/sqlite3fun.c:222: first defined here
/XXX/XXX/com/obj/sqlite3fun.o: In function `closeSqlite3':
/XXX/XXX/com/src/sqlite3fun.c:205: multiple definition of `closeSqlite3'
/XXX/XXX/com/obj/common.o:/XXX/XXX/com/src/sqlite3fun.c:205: first defined here
/XXX/XXX/com/obj/sqlite3fun.o: In function `getSqlite3dbName':
/XXX/XXX/com/src/sqlite3fun.c:256: multiple definition of `getSqlite3dbName'
/XXX/XXX/com/obj/common.o:/XXX/XXX/com/src/sqlite3fun.c:256: first defined here
/usr/bin/ld: Warning: size of symbol `getSqlite3dbName' changed from 574 in /XXX/XXX/com/obj/common.o to 613 in /XXX/XXX/com/obj/sqlite3fun.o
解决办法:
很有可能编译时用到了重复的链接库文件 例如:
ALLOBJ = $(ALLCOM) ${SETTLE_MAIN}/com/obj/common.o ${SETTLE_MAIN}/com/obj/sqlite3fun.o
ALLOBJ = $(ALLCOM) ${SETTLE_MAIN}/com/obj/common.o
可以视情况 去掉后面的sqlite3fun.o文件