2015-08-29 37 views
0

我有問題,將libevent鏈接到我的Ubuntu項目14.04 LTS服務器上。一切工作正常ArchLinux和Centos7(我在虛擬機上運行的Ubuntu和CentOS)。
這些是我的Makefile:
libevent在Ubuntu服務器上連接問題14.04

TARGET: opoznienia 

CFLAGS = -Wall -O2 --std=c11 -D DEBUG=1 $(shell pkg-config --cflags libevent_pthreads) -pthread -Wextra 
LFLAGS = -Wall $(shell pkg-config --libs libevent_pthreads) -pthread -Wextra 
OFILES = main.o err.o dropnobody.o ... <-- tl;tr 

opoznienia: $(OFILES) 
    $(CC) $(LFLAGS) $^ -o [email protected] 

.PHONY: clean TARGET 
clean: 
    rm -f opoznienia *.o *~ *.bak 


在Ubuntu上,我得到錯誤:

telnet_server.c:(.text+0xfc): undefined reference to `event_new' 
+0

請發佈編譯器輸出。導致此錯誤消息 – arved

回答

1

GNU鏈接器解析對象文件的參數(的.o .A。所以)從左至右嘗試以匹配所有未定義的符號。而且目標文件的順序在這裏非常重要,因爲如果GNU鏈接器在當前目標文件之前沒有被參數列表中傳遞的任何目標文件使用,那麼它將'忘記'任何符號。

在你的情況下,嘗試改變連接順序形式:

$(CC) $(LFLAGS) $^ -o [email protected] 

要:

$(CC) $^ $(LFLAGS) -o [email protected] 

讓我們知道這會有所幫助。