【问题标题】:How to configure autoreconf to use a different compiler than GCC如何配置 autoreconf 以使用与 GCC 不同的编译器
【发布时间】:2015-09-02 00:27:41
【问题描述】:

我正在尝试为其中一个项目编译代码,而源文件使用 autoreconf 来生成 makefile。

" autoreconf --verbose --force --make "

问题在于,这会以某种方式生成将编译器用作 GCC 的 makefile。我希望它使用不同的编译器生成配置文件。我该怎么做?

我可以以 make CC= 的形式发出命令,但这会在稍后使用的 libtool 中引发错误。

谢谢

【问题讨论】:

    标签: c++ c gcc compilation autoreconf


    【解决方案1】:

    通常autoreconf 只是重新生成configure 脚本和autoconf makefile 模板,它不会创建任何实际的makefile。

    在运行 configure 时会创建 Makefile,此时您要覆盖编译器:

    configure CC=clang CXX=clang++
    

    应该创建使用CC=clangCXX=clang++ 的makefile

    【讨论】:

    • autoreconf 和自动工具确实可以看到 the Goat book,但是在运行 configure 时覆盖 makefile 变量只是几十年来一直是标准做法的长期惯例。
    • @Jason 这意味着您使用的配置脚本添加了针对编译器版本的检查,并且这些检查与 clang 不兼容。并非每个配置脚本都这样做。不能指望我的回答涵盖世界上每个配置脚本的细节。 (而且最新的 clang 不是 4.x,而是 clang 伪装成 GCC 4.2.1,这可能是问题所在)。
    • 我听到了@Jonathan。我同意您的回答不能涵盖每个配置脚本。但鉴于我使用了你的答案但它没有用,我建议一条简单的线索:“配置脚本可以覆盖这些参数,认为它们可能不应该。”在仔细研究了我遇到的问题后,我确实发现作者已经覆盖了默认检查。我认为他的设计选择很糟糕,因为有标准的方法来做这些事情。
    • 我还注意到我的消息已被删除...我认为这不应该发生。其他人可能有同样的问题,阅读我的信息可能会对他们有所帮助。这是 cmets 对答案的目的之一。
    • Autoconf 旨在允许自定义,因此说配置脚本的作者不应该更改默认值是完全错误的。
    猜你喜欢
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    相关资源
    最近更新 更多