Cygwin犯了错误

时间:2013-04-06 02:57:42

标签: makefile cygwin

我正在编译源代码,它总是在make命令失败,下面是错误消息。

gcc: unrecognized option '-rdynamic'
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: \
  warning: --export-dynamic is not supported for PE targets,         \
  did you mean --export-all-symbols?
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: \
  warning: --export-dynamic is not supported for PE targets,         \
  did you mean --export-all-symbols?
make[3]: Leaving directory `/home/alimjan/slim502/src'
make[2]: Leaving directory `/home/alimjan/slim502/src'
make[1]: Leaving directory `/home/alimjan/slim502/src'
Making all in lib
make[1]: Entering directory `/home/alimjan/slim502/lib'
Cannot execute /bin/lmntal
Makefile:422: recipe for target `config.il' failed
make[1]: *** [config.il] Error 1
make[1]: Leaving directory `/home/alimjan/slim502/lib'

Makefile:293: recipe for target `all-recursive' failed

make: *** [all-recursive] Error 1

(以上显示的行显示)

我无法解决这个问题。我是make的新手,不知道该怎么做?

2 个答案:

答案 0 :(得分:0)

我不确定这是makefile的问题。错误是:

Cannot execute /bin/lmntal

我很确定你是否试图从命令行自己运行“/ bin / lmntal”,你会得到类似的错误。您的构建似乎需要一些额外的实用程序才能运行,您没有或哪些不在您的系统上运行。该文件(/bin/lmntal)是否存在?它可执行吗?它是一个脚本,如果是这样,第一行是否引用存在且可执行的解释器?当你使用的是64位操作系统时,它是一个32位程序(使用file /bin/lmntal),如果是这样,你是否在你的Ubuntu系统上安装了32位版本的libc等?反之亦然(如果你有一个32位的Ubuntu并且该实用程序是一个64位程序,你根本无法运行它)?

或者可能是这个程序应该在其他地方找到或者命名为其他东西,而你的makefile 有错,因为有些变量没有设置;例如,makefile可能会出现类似$(FOODIR)/bin/lmntal的内容,并且由于某种原因,未设置变量$(FOODIR)

如果您提供上述详细信息(文件存在?权限?file输出?完整规则在makefile的第422行?)我们可以提供更多帮助。

答案 1 :(得分:0)

通常当makefile输出看起来和输出一样严重时,那是因为它所使用的环境已经改变了 - 它可能是某些外部文件已被移动或删除,或者它可能是make太大了,特别是如果make本质上是递归的(远离递归makefile;去NR)

无论如何,如果我在哪里,我会调查环境发生变化的地方 - 也许如果您的项目是在版本系统中 - 尝试不同的分支

尝试解决makefile中的问题可能非常困难,所以最好回到一个有效的版本,然后从那里开始