我正在尝试使用gcc编译一些c代码,但我一直在:
/usr/bin/ld: cannot find -lnetlink
我有-lnetlink包含在gcc make参数中。使用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。
如果您需要更多信息,请与我们联系。任何帮助将不胜感激!
谢谢,-Alan
我正在尝试使用gcc编译一些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
在Makefile
中,您可以执行以下操作来实现此效果:
LDLIBS+=$(shell pkg-config --libs libnl-3.0)
CFLAGS+=$(shell pkg-config --cflags libnl-3.0)