Re: [問題] 一個make的error message

看板LinuxDev作者 (耐綸)時間12年前 (2013/04/05 14:23), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《e12518166339 (耐綸)》之銘言: : 我在我所要編譯的資料夾下編譯時產生如下之錯誤 : libeserv/misc.c: In function 「DBG」: : libeserv/misc.c:13:22: 錯誤: parameter 「fmt」 set but not used [-Werror=unused-but-set-parameter] : cc1: all warnings being treated as errors : make: *** [libeserv/misc.o] Error 1 : 我後來進到Makefile將-Werror給註解掉 : 可是產生另一個錯誤 : libeserv/misc.c: In function 「DBG」: : libeserv/misc.c:13:22: 警告: parameter 「fmt」 set but not used : [-Wunused-but-set-parameter] : gcc -O0 -Wall -Wextra -D_POSIX_SOURCE -D_BSD_SOURCE -g -std=gnu99 -c -o : main.o main.c : gcc -O0 -Wall -Wextra -D_POSIX_SOURCE -D_BSD_SOURCE -g -std=gnu99 -c -o : cgi_custom.o cgi_custom.c : gcc -o eserv -O0 -Wall -Wextra -D_POSIX_SOURCE -D_BSD_SOURCE -g -std=gnu99 : -lpthread libeserv/mempool.o libeserv/hash.o libeserv/io.o libeserv/http.o : libeserv/request.o libeserv/analysis.o libeserv/entry.o libeserv/cgi.o : libeserv/misc.o main.o cgi_custom.o : libeserv/entry.o: In function `start_thread': : /home/nylon7/GDB_len_C/eserv/libeserv/entry.c:13: 未定義參考到「pthread_create : 」 : collect2: 錯誤: ld 回傳 1 : make: *** [eserv] Error 1 : 我的想法只是單純把warning改成無視 : 可是卻產生了其他錯誤 : 大致上是如此 各位前輩說問題出在-lpthread 但是我的原生Makefile檔是有這個參數的,附上我的makefile 1 PROG = eserv 2 3 CC = gcc 4 5 CFLAGS = -O0 -Wall -Wextra -Werror\ 6 -D_POSIX_SOURCE -D_BSD_SOURCE -g \ 7 -std=gnu99 8 # -D_DEBUG 9 LDFLAGS = -lpthread 10 11 OBJS = \ 12 libeserv/mempool.o \ 13 libeserv/hash.o \ 14 libeserv/io.o \ 15 libeserv/http.o \ 16 libeserv/request.o \ 17 libeserv/analysis.o \ 18 libeserv/entry.o \ 19 libeserv/cgi.o \ 20 libeserv/misc.o \ 21 main.o \ 22 \ 23 cgi_custom.o 24 25 all: $(PROG) 26 27 $(PROG): $(OBJS) 28 $(CC) -o $(PROG) $(CFLAGS) $(LDFLAGS) $(OBJS) 29 30 clean: 31 rm -f $(PROG) $(OBJS) 弄了好久沒能搞定希望有人能解惑 感恩各位 -- 林語堂:「中國就有這麼一群奇怪的人,本身是最底階層, 利益每天都在被損害,卻具有統治階級的意識, 在動物世界裡找這麼弱智的東西都幾乎不可能,」 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 110.28.104.199

04/05 17:00, , 1F
你知道你 libpthread.a放在哪裡嘛
04/05 17:00, 1F

04/05 17:25, , 2F
你的PROG要先跑OBJS,產生OBJS的時候就要帶LDFLAGS進去了
04/05 17:25, 2F

04/05 17:26, , 3F
不是到最後產生執行檔的時候才帶進去~
04/05 17:26, 3F

04/05 17:30, , 4F
仔細看已經產生entry.o了~上面我腦殘請無視~~Orz
04/05 17:30, 4F

04/05 23:34, , 5F
試試看 LDFLAGS = -lpthread 改成 LDFLAGS = -pthread
04/05 23:34, 5F

04/06 04:49, , 6F
試試 $(CC) $(CFLAGS) $(OBJS) -o $(PROG) $(LDFLAGS)
04/06 04:49, 6F

04/07 17:58, , 7F
改成 LDFLAGS = -pthread 解決了 感恩
04/07 17:58, 7F
文章代碼(AID): #1HNctPyo (LinuxDev)
討論串 (同標題文章)
文章代碼(AID): #1HNctPyo (LinuxDev)