【问题标题】:compile error: /usr/bin/ld: cannot find -lnetlink编译错误:/usr/bin/ld: 找不到 -lnetlink
【发布时间】:2013-06-20 02:19:07
【问题描述】:

我正在尝试使用 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。

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

谢谢, -艾伦

【问题讨论】:

    标签: c ubuntu gcc linker


    【解决方案1】:

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

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

    您不应使用-L 引用/usr/include 路径。 -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)
    

    【讨论】:

      猜你喜欢
      • 2014-08-17
      • 1970-01-01
      • 2023-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      相关资源
      最近更新 更多