2013-06-20 39 views
2

我想要编译通过化妆用gcc一些C代码,但我不断收到:编译错误:在/ usr /斌/劳工处:找不到-lnetlink

/usr/bin/ld: cannot find -lnetlink 

-lnetlink包括在gcc中创建参数。使用找到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。

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

感谢, -Alan

回答

0

I'm trying to compile some c code via make with gcc, but I keep getting:

从技术上讲,这个阶段被称为链接。这种差异一开始可能看起来很微妙,但它是一个非常重要的差异,可以帮助调查出现这种问题时的调查。

您不应该参考/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 

Makefile,你可以做到以下几点,以达到这样的效果:

LDLIBS+=$(shell pkg-config --libs libnl-3.0) 
CFLAGS+=$(shell pkg-config --cflags libnl-3.0) 
相关问题