1

这就是我所做的... #tar -xzvf libnet-0.10.11.tar.gz #cd libnet

然后我将 linux.mak 文件复制到父目录下的 port.mak 文件中。然后,正如文档所述,我在当前目录中使用了 make ...

naman@naman-laptop:~/Desktop/Software/libnet$ make
make -C lib/ lib
make[1]: Entering directory `/home/naman/Desktop/Software/libnet/lib'
gcc -O2 -Wall -Werror -Wno-unused -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -g -I../include -Iinclude -DTARGET_LINUX   -c -o core/config.o core/config.c
cc1: warnings being treated as errors
core/config.c: In function ‘__libnet_internal__seek_section’:
core/config.c:87: error: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
core/config.c: In function ‘__libnet_internal__get_setting’:
core/config.c:111: error: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
make[1]: *** [core/config.o] Error 1
make[1]: Leaving directory `/home/naman/Desktop/Software/libnet/lib'
make: *** [lib] Error 2

谁能详细解释一下这个错误,以及如何纠正它?任何帮助将非常感激。

4

2 回答 2

1

https://github.com/sam-github/libnet,那是一个古老的libnet版本,现代的使用autoconf,你需要使用这么旧的吗?

我建议从您正在使用的 makefile 中-Wall删除两者。-Werror

于 2013-11-26T19:54:50.390 回答
0

看起来您正在尝试在较新的系统上编译较旧的库,并且gcc自编写此库以来已添加新警告。

由于 Makefile 将警告视为错误,(您可以知道,因为它已打印cc1: warnings being treated as errors)警告warn_unused_result错误导致编译失败。

您的选择是:

  1. 编辑 Makefile(s) 并删除任何-Werror参数
  2. 修复根本原因(代码中未使用的 fgets() 返回值)
  3. 找一个不同的库来使用 - 为什么你想在你的系统上使用这个(可能是未维护的)库?
于 2011-02-05T06:15:17.923 回答