c - libevent 在 ubuntu 服务器 14.04 上的链接问题

标签 c ubuntu makefile libevent

我在将 libevent 链接到 ubuntu 14.04 LTS 服务器上的 c 项目时遇到问题。在 ArchLinux 和 Centos7 上一切正常(我在虚拟机上运行的 ubuntu 和 centos)。
这是我的 Makefile:

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 $@

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


在 ubuntu 上我收到错误:

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

最佳答案

GNU 链接器从左到右解析目标文件参数 (.o .a .so),尝试匹配所有 undefined symbol 。目标文件的顺序在这里非常重要,因为如果在当前目标文件之前的参数列表中传递的任何目标文件未使用任何符号,GNU 链接器就会“忘记”这些符号。

根据您的情况,尝试更改链接订单形式:

$(CC) $(LFLAGS) $^ -o $@

致:

$(CC) $^ $(LFLAGS) -o $@

请告诉我们这是否有帮助。

关于c - libevent 在 ubuntu 服务器 14.04 上的链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32283933/

相关文章:

python - 如何在 ubuntu 上创建 mysql 数据库 - 用户 '' @'localhost' 访问被拒绝

c - 这是 `makefile` 在 C 中的正确实现吗?

makefile - 为 Gtk 制作文件

c - 如何用socket地址获取自己的IP地址?

c - 如何在c控制台中将光标移回?

c - 保护嵌入式设备的最佳实践

variables - 使目标取决于变量

c - 在字符串 c 中的单词之间添加空格

python - Airflow :使用 BashOperator 运行时,Python 脚本如何发出失败的任务信号

linux - Bash 脚本 tee 命令语法问题