编译nettle-2.7.1时出错

时间:2014-09-22 23:39:21

标签: gmp gnutls

当我尝试编译nettle-2.7.1时,我得到以下内容:

root @ tcx2270-19:〜/ nettle-2.7.1#make make:警告:找不到aes-decrypt-internal.o.d': No such file or directory make: Fatal error in reader: Makefile, line 594: Read of include file aes-decrypt-internal.o.d'失败

有没有人见过这个问题?感谢。

2 个答案:

答案 0 :(得分:1)

我也遇到了同样的问题。它与gmp无关。 ./configure脚本生成一个损坏的Makefile。在对生成的Makefile进行一些分析之后,我找到了一个解决方案。

在生成的 Makefile 的最底部搜索如下所示的行:

DEP_FILES = $(SOURCES:.c=.$(OBJEXT).d) $(SOURCES:.c=.p$(OBJEXT).d) asm.d

您可以通过将构建更改为以下行来修复构建:

DEP_FILES = $(SOURCES:.c=.c.$(OBJEXT).d) $(SOURCES:.c=.c.p$(OBJEXT).d) asm.d

此外,我们必须在所有子目录中修复Makefile。

对于 ./ tools / Makefile ,在最底部,找到如下所示的行:

include  $(SOURCES:.c=.$(OBJEXT).d)

并将其更改为

include  $(SOURCES:.c=.c.$(OBJEXT).d)

此外,您需要添加以下两个构建目标:

../libnettle.a:
        $(MAKE) -C .. libnettle.a

../libhogweed.a:
        $(MAKE) -C .. libhogweed.a

对于 ./ testsuite / Makefile ,在最底部,找到如下所示的行:

DEP_FILES = $(SOURCES:.c=.$(OBJEXT).d) $(CXX_SOURCES:.cxx=.$(OBJEXT).d)

并将其更改为:

DEP_FILES = $(SOURCES:.c=.c.$(OBJEXT).d) $(CXX_SOURCES:.cxx=.cxx.$(OBJEXT).d)

最后,在 ./ examples / Makefile 中,再次在最底部,搜索看起来像这样的行:

include  $(SOURCES:.c=.$(OBJEXT).d)

并将其更改为

include  $(SOURCES:.c=.c.$(OBJEXT).d)
Phew,至少对我来说,这使构建工作。当然,这是一个丑陋的解决方案,但它完成了工作。一个更好的解决方案是修复configure-script但我没有时间去做。值得注意的是,nettle 3.0没有这个问题。太糟糕的gnutls不适用于那个新版本。

答案 1 :(得分:0)

更新:我创建了一个补丁,它在Makefile.in文件中执行上述所有修复。因此,您不必自己修复它们。最好的方法是,只需解压缩源代码,然后按照正常的方式继续使用./configure。

从这里获取:http://pastebin.com/36M5LHK3