【问题标题】:Compiler Error when Compiling GCC 5.3.0 (-Lyes/lib and -Iyes/include)编译 GCC 5.3.0 时出现编译器错误(-Lyes/lib 和 -Iyes/include)
【发布时间】:2016-04-29 22:08:48
【问题描述】:

在尝试编译 GNU GCC 5.3.0 时,我在尝试构建 libjavamath.la 时遇到以下错误。

/bin/bash ../../../libtool --tag=CC   --mode=link /home/borish/Downloads/gcc-build/./gcc/xgcc -B/home/borish/Downloads/gcc-build/./gcc/ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include    -W -Wall -Wmissing-declarations -Wwrite-strings -Wmissing-prototypes -Wno-long-long  -Iyes/include -g -O2 -module -version-info 0:0:0 -no-undefined -Lyes/lib -lgmp -avoid-version  -o libjavamath.la -rpath /usr/local/lib/../lib64/gcj-5.3.0-16 gnu_java_math_GMP.lo ../../../native/jni/classpath/jcl.lo 
../../../libtool: line 5209: cd: yes/lib: No such file or directory
libtool: link: cannot determine absolute directory name of `yes/lib'
Makefile:403: recipe for target 'libjavamath.la' failed

这是在安装了 GCC 4.9.2-10 的 Debian 8.4 系统上。我相信我已经满足了所有prerequisites 和Google wasn't been much help。

有什么想法吗?

更新:

我使用以下内容运行配置脚本:

../gcc-5.3.0/configure --disable-multilib --with-mpc --with-isl --with-mpfr --with-gmp

【问题讨论】:

  • -Lyes/lib 对我来说看起来很奇怪。显然,问题的关键在于libtool 文件。 yes/lib 来自哪里?此外,configure 命令的外观也很有趣。
  • @RuslanOsmanov 它在多个 Makefile 中被引用,并且通常与 libgmp 相关联。
  • 我再次尝试不使用所有 --with-XXX 开关,只包括 --disable-multilib 并看看会发生什么。

标签: gcc configure


【解决方案1】:

听起来您没有正确运行“配置”。例如:

https://software.ecmwf.int/issues/browse/SUP-676

好的,我已经看到一个问题,“--with-jasper”选项必须指向 到“jasper”安装的前缀,例如

$./configure --with-jasper=/usr/local/jasper --with-png-support.

否则将值“yes”设置为前缀..

例如,如果你看这里:

http://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html

您会看到像‘--with-headers=directory’ 这样的标志要求您输入目录路径。我怀疑你的“-with-mpc”等也发生了同样的事情。

建议:清理您的构建目录,然后(小心!)重新运行./configure。

【讨论】:

    【解决方案2】:

    罪魁祸首似乎是启动configure 脚本时的--with-gmp、--with-mpc 和--with-mpfr 开关。我怀疑因为libgmp 是libmpc 和libmpfr 的先决条件,所以configure 脚本中的bug 功能将包括有问题的-I 和-L 指令。包含其中任何一个都将导致根 Makefile 中出现以下内容

    HOST_GMPLIBS = -Lyes/lib -lmpc -lmpfr -lgmp
    HOST_GMPINC = -Iyes/include 
    

    我尚未确认其他任何 Makefile 中的情况都是如此,但我怀疑其他地方也发生了类似的事情,这就是我在尝试构建 libjavamath.la 时遇到的情况。

    解决方法是从配置调用中省略这些开关。它们应该包含在任何事件中,因为如果它们不在主机上,configure 脚本将会失败。

    【讨论】:

    • @paulsm4 不;主机上的任何地方都没有这样的目录。有一个名为 /usr/bin/yes (linux.die.net/man/1/yes) 的文件,但没有文件夹。看起来配置脚本根据开关插入了yes。
    • 是的。这是一个示例,如果您未能提供参数或胖手指,“配置”如何插入“是”作为前缀:software.ecmwf.int/issues/browse/SUP-676。建议:清理一切,然后重新运行 ./configure"。
    • @paulsm4 是的,这就是我正在做的事情。
    猜你喜欢
    • 2012-01-28
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多