2015-08-29 9 views
0

У меня проблема с ссылкой libevent в мой проект c на сервере 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 


На убунту я получаю сообщение об ошибке:

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

Просьба также указать выход компилятора. приводя к этому сообщению об ошибке – arved

ответ

1

GNU компоновщик анализирует аргументы объектных файлов (.o .a .so) слева направо, пытаясь для соответствия всем неопределенным символам. И порядок объектных файлов здесь действительно важен, потому что GNU linker «забывает» любые символы, если они не были использованы каким-либо объектным файлом, переданным в списке аргументов перед текущим объектным файлом.

В вашем случае попробуйте изменить форму заказа связь:

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

To:

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

Дайте нам знать, если это помогает.