2

我正在尝试使用 gcc 通过 make 编译一些 c 代码,但我不断得到:

/usr/bin/ld: cannot find -lnetlink

我在 gcc make 参数中包含了-lnetlink 。使用locate netlink可以找到多个项目。我什至使用-L/usr/include/linux告诉 gcc 在哪里可以找到一个,但它仍然给出错误。

gcc 命令参数如下:

gcc -g -ggdb -Wall -Wextra  -o mt6d mt6d.o address_worker.o tunnel_worker.o mt6d_assoc.o addr_gen.o send_utils.o if_utils.o tun_utils.o icmp_utils.o utils.o  -lcrypto -lssl -lnetlink -lpthread -lnetfilter_queue

我也遇到了libnetlink.h错误,但能够解决它们,但如果这可能相关,我将其包括在此处,并且此错误在另一个错误修复后立即出现。通过使用C_INCLUDE_PATH 修复

我最近升级到 Ubuntu 13.04 并且在此之前使用的是 11.04。

如果您需要更多信息,请告诉我。任何帮助将不胜感激!

谢谢,-艾伦

4

1 回答 1

0

我正在尝试使用 gcc 通过 make 编译一些 c 代码,但我不断得到:

从技术上讲,这个阶段称为链接。这种差异起初可能看起来很微妙,但它是一个非常重要的差异,并且可以在出现此类问题时帮助制定调查框架。

您不应/usr/include使用-L. -L添加到库的搜索路径,通常只有头文件应该显示在/usr/include.

libnl启用pkg-config,所以你应该使用它。

例如(假设您已经libnl-3-dev安装):

gcc -o my_executable $(pkg-config --libs libnl-3.0) my_foo.o my_bar.o

在 aMakefile中,您可以执行以下操作来实现该效果:

LDLIBS+=$(shell pkg-config --libs libnl-3.0)
CFLAGS+=$(shell pkg-config --cflags libnl-3.0)
于 2013-06-20T02:28:43.017 回答