autoconf 在 Linux Mint 上抱怨“C 编译器无法创建可执行文件”

问题描述 投票:0回答:6

我正在尝试在 32 位和 64 位安装上安装 Linux Mint 16“petra”。

我的电脑上没有互联网连接,因此必须手动安装所有附加软件。作为一名开发人员,我想我会尝试使用 wxWidgets 安装代码块,因此请按照以下位置的说明进行操作:

http://wiki.codeblocks.org/index.php?ti

为了执行安装,我似乎需要先决条件,因此请按照以下说明进行操作 https://developer.gnome.org/gtk3/stable ... lding.html 下载了 glib“东西”,解压并运行配置。

事情就在这时失败了。我在终端中收到一条消息,指出

C compiler cannot create executables
和 to
see config.log for more details
其中包含(除其他内容外)以下内容:

gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) 
configure:4072: $? = 0
configure:4061: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:4072: $? = 4
configure:4061: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.

如何诊断这些错误?

linux gcc autoconf
6个回答
13
投票

在某些版本的 gcc 上,

-V
选项告诉它使用指定版本的编译器——但它需要一个参数。它被记录在here。该选项似乎已在 4.5.4 和 4.6.4 之间的某个时间被删除。

但是像这样的配置脚本预计会执行不起作用的操作,因此它可以确定它正在使用什么编译器以及它支持哪些功能。看来此时脚本并没有假设它调用的编译器是 gcc;相反,它正在尝试许多不同的选项来让编译器报告其自己的版本号。

我认为您向我们展示的错误消息:

gcc: error: unrecognized command line option '-V'

与您遇到的问题无关。

您需要关注紧接在错误消息之前的日志部分,即 C 编译器“无法生成可执行文件”。

我尝试的第一件事是编译并执行一个简单的“hello, world”程序。如果这不起作用,那么你就遗漏了一些东西,并且你的编译器确实无法工作。如果它确实有效,那么您需要研究

config.log
文件以查看真正导致错误的原因。

我有时会修改

configure
脚本来打印更多信息来追踪此类问题。例如,它将生成并编译一个小的C程序;您可以添加代码来保存该 C 程序的副本并单独检查它。


3
投票

我遇到这个错误是因为我的 Linux 发行版没有附带编译 C 程序所需的一切。

build-essentials
元包给了我所需的一切。

sudo apt-get install build-essential

1
投票

我也遇到过类似的情况。如果我直接从 shell 运行

configure
和其他命令,它们会正常工作。我的情况有所不同。我从另一个
./configure && make
运行
Makefile
并且设置了
CFLAGS
变量。这产生了像你这样的错误。这是因为
CFLAGS
变量。它会影响
configure
的工作方式。运行
./configure --help
列出了更多影响它的因素。也许您应该检查是否设置了其中任何一个。


1
投票

在 RHEL 7 上安装 python 时,我遇到了同样的错误。安装这个库对我来说很有效:

yum install glibc-devel
yum install glibc-devel.i686

0
投票

感谢基思的提示。遇到这个问题两次了。最初它在 shell 打印输出中报告这一点:

gcc: error: unrecognized command line option '-V'

但是检查 config.log 发现了真正的问题,它是由 Linux guest 的 vboxsf 共享文件夹的权限问题引起的。将构建目标文件夹复制到非共享文件夹修复了该问题。

configure:3995: ./conftest
./configure: line 3997: ./conftest: Permission denied
configure:3999: $? = 126
configure:4006: error: in `/home/my_virtual_box_shared_folder':

0
投票

我的理解

我也遇到同样的问题。这是我的理解:

  1. GCC
    (您尝试安装的那个,表示
    gcc2
    )使用
    GCC
    (您系统中现有的旧版本,表示
    gcc1
    )来编译自身。
  2. 但是,
    -V
    -qversion
    是较旧的选项,仅适用于旧版本
    GCC
  3. 您的
    gcc1
    没有这些选项,则会出现错误。

尝试

  • 使用您最喜欢的编辑器来编辑
    configure
    文件。
  • 删除脚本中的
    -V -qversion
  • ./configure
  • make

上述尝试对我有用。

想法

为什么

-V -qversion
configure
中?

  • 为了向后兼容。
© www.soinside.com 2019 - 2024. All rights reserved.