【问题标题】:GNU C Compiler is not working on QT Creator for OSXGNU C 编译器不适用于 OSX 的 QT Creator
【发布时间】:2019-06-25 17:17:16
【问题描述】:

我通过brew 在 OSX 上安装了gcc。对于 clang 不支持的特定命令,我需要使用 gcc 而不是 clang。在 shell 屏幕中,gcc example.c 命令使用 clang 编译 example.c 代码,而 gcc-9 example.c 命令使用原始 gcc(GNU C 编译器)编译代码。

在 QT 中,我需要使用 pipe() 函数来获取 GCC 命令的输出。如果我将带有 gcc 的命令字符串放到管道函数中,则会出错,因为 clang 不支持我在开头提到的特定命令。如果我将带有 gcc-9 的命令放入管道函数,这次 QT 会给出类似“gcc-9: not found”的错误。

为什么gcc-9 命令在shell 屏幕上有效,而在QT 中无效?如何在 QT 中使用gcc-9 命令?

代码片段如下:

std::string removeComments(const std::string &path)
{
    std::array <char, 256> buffer;
    std::string result, cmd = "gcc-9 -fpreprocessed -dD -E '" + path + "'";
    std::unique_ptr <FILE, decltype(&pclose)> pipe(popen(cmd.c_str(), "r"), pclose);

    if (!pipe)
        throw std::runtime_error("popen() failed!");

    fgets(buffer.data(), buffer.size(), pipe.get());

    while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr)
        if (!skipLine(buffer.data()))
            result += buffer.data();

    return result;
}

【问题讨论】:

  • 你是如何在你正在使用的 Qt Creator “工具包”中配置 gcc-9 的?错误表明它可能只是没有找到,你的 shell 可能在 PATH 中有它,而 Qt creator 可能有不是。
  • @FrankOsterfeld 屏幕截图在这里:i.imgur.com/kFzrkWW.png 我将“Linux ICC”的路径设置为安装 gcc-9 的“/usr/local/bin/gcc-9”。但它仍然无法正常工作。
  • "clang不支持我开头提到的具体命令"什么命令?
  • ICC 不是 GCC,Linux 不是 Mac OS。
  • @n.m.它是gcc -fpreprocessed,我用它从 C 源文件中删除 cmets。 ICC不只是编译器的名称吗?我将ICC的路径设置为gcc-9的路径。这是截图:i.imgur.com/yNWTCc1.png(对不起,我以前从未使用过 OSX,我现在正在使用 Hackintosh。所以我不知道 ICC 是什么。)

标签: qt gcc clang


【解决方案1】:

您用于编译代码的编译器与您尝试从代码调用 的编译器无关。 IDE 中的所有编译器设置都不相关。为避免混淆,请将它们恢复为默认值。

你需要

  1. 设置你的PATH环境变量,包括/usr/local/bin,并且命令gcc-9可以被shell找到;或
  2. 使用完整路径,例如"/usr/local/bin/gcc-9"

【讨论】:

  • 哦,我是多么愚蠢。 /usr/local/bin/gcc-9 -fpreprocessed ... 有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多