亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

文件編譯時出現multiple definition of 'xxxxxx'的具體解決方法

2020-01-26 15:57:49
字體:
來源:轉載
供稿:網友
問題:
原來有單個文件tcpclient.c,運行gcc -o tcpclient tcpclient.c可以順利完成編譯,并能與下載到目標板中的tcpserver成功通訊;
現在把tcpclient.c中的底層通訊部分抽取出來,單獨放到一個文件中nettrans.c中,并有netrans.h作為頭文件;
然后,使用命令
復制代碼 代碼如下:

gcc -o tcpclient nettrans.c tcpclient.c

編譯,也總能成功編譯。
但是,使用Makefile來編譯,總是出現如下multiple definition of類的錯誤:
復制代碼 代碼如下:

dingq@u1110-120628:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ make
gcc  nettrans.o tcpclient.o -o tcpclient
tcpclient.o: In function `nettrans':
/home/dingq/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket/nettrans.c:30: multiple definition of `nettrans'
nettrans.o:/home/dingq/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket/nettrans.c:30: first defined here
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [client] Error 1

Makefile的內容:
復制代碼 代碼如下:

CC = gcc
CROSS_COMPILE = arm-linux-
CROSS_CC = $(CROSS_COMPILE)gcc
CCFLAGS = -g3 -Wall -o0
LDFLAGS =
RM = -rm -rf
SRC_CLIENT = nettrans.c tcpclient.c
SRC_SERVER = tcpserver.c
OBJ_CLIENT = $(SRC_CLIENT:%.c=%.o)
OBJ_SERVER = $(SRC_SERVER:%.c=%.o)
.PHONY : all
all : client
$(OBJ_CLIENT) : $(SRC_CLIENT)
 $(CC) $(CCFLAGS) -c $< -o $@
$(OBJ_SERVER) : $(SRC_SERVER)
 $(CROSS_CC) $(CCFLAGS) -c $< -o $@
client : $(OBJ_CLIENT)
 $(CC) $(LDFLAGS) $(OBJ_CLIENT) -o tcpclient
server : $(OBJ_SERVER)
 $(CROSS_CC) $(LDFLAGS) $(OBJ_SERVER) -o tcpserver
.PHONY : clean
clean :
 $(RM) *.o tcpclient tcpserver

解決辦法:
1. 使用普通命令編譯可以成功,但是使用Makefile就不成功,說明問題出在Makefile上;
再仔細檢查Makefile具體的編譯執行過程:
復制代碼 代碼如下:

dingq@u1110-120628:~/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket$ make clean;make
rm -rf *.o tcpclient tcpserver
gcc -g3 -Wall -o0 -c nettrans.c -o nettrans.o
gcc -g3 -Wall -o0 -c nettrans.c -o tcpclient.o
gcc  nettrans.o tcpclient.o -o tcpclient
tcpclient.o: In function `nettrans':
/home/dingq/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket/nettrans.c:30: multiple definition of `nettrans'
nettrans.o:/home/dingq/hwsvn/2sw/1prj_linux/pdu/src/branches/pdu-isocket/isocket/nettrans.c:30: first defined here
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [client] Error 1

原來生成nettrans.o和tcpclient.o都使用了相同的源文件nettrans.c;
所以,是Makefile中
復制代碼 代碼如下:

$(OBJ_CLIENT) : $(SRC_CLIENT)
 $(CC) $(CCFLAGS) -c $< -o $@

這個地方出了問題,應該使用模式規則來進行目標文件和依賴文件的匹配;
更改Makefile如下:
復制代碼 代碼如下:

CC = gcc
CROSS_COMPILE = arm-linux-
CROSS_CC = $(CROSS_COMPILE)gcc
CCFLAGS = -g3 -Wall -o0
LDFLAGS =
RM = -rm -rf
SRC_CLIENT = nettrans.c tcpclient.c
SRC_SERVER = tcpserver.c
OBJ_CLIENT = $(SRC_CLIENT:%.c=%.o)
.PHONY : all
all : client
%.o : %.c
 $(CC) $(CCFLAGS) -c $< -o $@
client : $(OBJ_CLIENT)
 $(CC) $(LDFLAGS) $(OBJ_CLIENT) -o tcpclient
server : $(OBJ_SERVER)
 $(CROSS_CC) $(CCFLAGS) -c $(SRC_SERVER) -o $(OBJ_SERVER)
 $(CROSS_CC) $(LDFLAGS) $(OBJ_SERVER) -o tcpserver
.PHONY : clean
clean :
 $(RM) *.o tcpclient tcpserver

重新編譯,成功生成tcpclient。
問題解決。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲精品一区二555| 国产黑人绿帽在线第一区| 黑人极品videos精品欧美裸| 日韩欧美a级成人黄色| 精品国产欧美一区二区三区成人| 日韩精品丝袜在线| 红桃视频成人在线观看| 97精品伊人久久久大香线蕉| 视频直播国产精品| 成人国产精品一区二区| 中文字幕欧美专区| 91精品国产综合久久香蕉的用户体验| 亚洲sss综合天堂久久| 九九综合九九综合| 久久精品亚洲精品| 伊人av综合网| 欧美日韩国产第一页| 亚洲最大的网站| 91经典在线视频| 欧美激情国产日韩精品一区18| 日韩国产激情在线| 国产精品免费视频xxxx| 国产精品久久久久不卡| 亚洲在线观看视频网站| 欧美亚洲在线播放| 91欧美精品成人综合在线观看| 国产视频自拍一区| 中文字幕亚洲二区| 亚洲香蕉av在线一区二区三区| 欧洲成人性视频| 欧美国产日本高清在线| 91网在线免费观看| 亚洲加勒比久久88色综合| 精品福利视频导航| 亚洲国产精品久久精品怡红院| 国产精品丝袜久久久久久不卡| 欧美极品在线视频| 久久久亚洲欧洲日产国码aⅴ| 欧美精品免费在线| 欧美一级电影久久| 国产主播精品在线| 中文字幕亚洲色图| 欧美激情极品视频| 亚洲国产欧美一区二区三区同亚洲| 精品成人国产在线观看男人呻吟| 成人羞羞国产免费| www.亚洲男人天堂| www.日韩av.com| 欧美激情在线一区| 91在线免费看网站| 成人情趣片在线观看免费| 久久天天躁狠狠躁老女人| 午夜精品99久久免费| 亚洲第一av网站| 国产精品久久久久久久久| 成人免费网站在线看| 亚洲free性xxxx护士白浆| 91精品一区二区| 在线性视频日韩欧美| 97在线视频免费观看| 欧美—级高清免费播放| 国产精品成人观看视频国产奇米| 亚洲va码欧洲m码| 日本精品免费观看| 国产精品视频1区| 国产精品久久一区| 国产偷亚洲偷欧美偷精品| 国产精品精品久久久久久| 国产精品三级久久久久久电影| 狠狠色狠狠色综合日日五| 成人网在线免费观看| 精品久久久一区二区| 亚洲福利视频免费观看| 欧美性猛交xxxx免费看漫画| 亚洲欧美一区二区三区在线| 97精品久久久中文字幕免费| 国产精品扒开腿做| 国产精品欧美日韩| 亚洲激情在线视频| 欧美成人免费全部观看天天性色| 亚洲国产精品推荐| 国产精品在线看| 久久亚洲一区二区三区四区五区高| 中文字幕日韩欧美在线视频| 亚洲一区二区免费| 国产91精品黑色丝袜高跟鞋| 欧美激情亚洲自拍| 日韩成人黄色av| 日韩免费黄色av| 亚洲成人久久一区| 欧美日韩一区二区三区| 国模极品一区二区三区| 久久久免费观看| 国产精品久久9| 少妇高潮久久77777| 久久av红桃一区二区小说| 精品国产老师黑色丝袜高跟鞋| 欧美日韩一区免费| 欧美日产国产成人免费图片| 欧美电影免费观看电视剧大全| 国产一区二区三区日韩欧美| 国外成人在线直播| 国产亚洲视频在线| 精品国产一区二区三区四区在线观看| 欧美日韩成人黄色| 亚洲欧美在线看| 色视频www在线播放国产成人| 国产99久久精品一区二区| 国产午夜精品久久久| 91sao在线观看国产| 久久黄色av网站| 欧美性猛交xxxx富婆弯腰| 国产精品成人观看视频国产奇米| 国产手机视频精品| 久久99国产综合精品女同| 国产视频999| 国产精品尤物福利片在线观看| 亚洲精品一区二区网址| 性色av香蕉一区二区| 91精品国产91久久久久福利| 欧美不卡视频一区发布| 国产日韩在线观看av| 97久久精品视频| 久热精品在线视频| 综合久久五月天| 大胆欧美人体视频| 亚洲欧美国产一本综合首页| 国产精品久久久久久久久久99| 亚洲aⅴ日韩av电影在线观看| 国产成人精彩在线视频九色| 国产精品十八以下禁看| 久久精品久久精品亚洲人| 狠狠综合久久av一区二区小说| 欧美国产精品日韩| 国产精品久久在线观看| 亚洲欧美日韩第一区| 最新国产精品亚洲| 国产精品一区二区三区成人| 久久精品一本久久99精品| 亚洲a∨日韩av高清在线观看| 久久视频在线视频| 秋霞午夜一区二区| 久久久国产一区二区| 国产日韩欧美一二三区| 欧洲一区二区视频| 久久99精品视频一区97| 亚洲精品91美女久久久久久久| 日日骚久久av| 一二美女精品欧洲| 狠狠躁夜夜躁久久躁别揉| 欧美日韩电影在线观看| 欧美巨乳在线观看| 2019国产精品自在线拍国产不卡| 91理论片午午论夜理片久久| 国产经典一区二区| 色777狠狠综合秋免鲁丝| 最近2019中文字幕大全第二页| 久久久久久国产精品三级玉女聊斋| 久久久久久久久亚洲| 97超级碰在线看视频免费在线看| 欧美精品久久久久久久久久| 久久久久久18| 欧美超级乱淫片喷水| 国产中文字幕91|