检测当前的 gcc 安装



为了从程序中自动检测本机GCC安装,我想获取gcc.exe或其根文件夹的当前路径。 但是当我输入gcc -print-prog-name=gcc时,它只是打印回gcc这显然不是我所期望的。

如何使用 gcc 或据称与 gcc 一起安装在系统上的其他组件来检索 gcc 安装或可执行文件的路径?

至少对于Linux来说,"本机GCC安装"可能是合理的 解释为通过/usr/bin/gcc调用的 GCC 安装。 但根据这种解释,它的安装是毫无疑问的 路径。

每当你调用gcc,如果找到这样的程序,它是 只是第一个称为gcc的程序,在其中一个中找到 环境变量PATH的值中列出的目录调用的环境。在Linux和其他类Unix操作系统上是正确的。 在Windows上是真的。

想象一下,gcc有一个选项--whereami让它打印其安装 标准输出上的路径。你会得到的答案就是答案 由在操作PATH中发现的第一次安装gcc给出 调用时间。上可能有任意数量的 GCC 安装 一个系统,每个系统都会为gcc --whereami产生不同的答案 该装置是在操作PATH中发现的第一个装置。

通过不同的PATH设置选择不同的 GCC 安装 在Windows上司空见惯,其中"GCC的本机安装"的概念 没有任何意义。但它也适用于Linux,有时也会使用。关键是:没有 无论您运行什么命令来找出gcc的安装位置,任何 您得到的答案原则上取决于操作PATH- 除非使用绝对文件名运行命令:

/usr/bin/gcc --whereami

这当然相当于在你问问题之前决定答案。

唯一可以从中发现目录的跨平台方法 哪个gcc将由命令运行,如果有的话,gcc ...,是获取 操作PATH(以编程方式使用getenv), 从左到右解析它包含的目录,并连续 目录查询文件系统是否存在可执行gcc在其中,当你找到一个时就停下来。

由于这只能为操作PATH给出答案, 并且由于PATH的值需要在 Windows 上以不同的方式解析,并且 类Unix操作系统,您也可以调用执行相同操作的特定于操作系统的实用程序 东西。

类Unix:

$ which gcc
/usr/bin/gcc

窗户:

C:>where gcc
C:mingw-w64x86_64-7.2.0-posix-seh-rt_v5-rev0mingw64bingcc.exe

请注意,在Windows案例中,我需要选择我的mingw-w64终端环境才能获得答案

若要以编程方式执行命令并获取其输出,请参阅如何从 C 运行外部程序并分析其输出?。在 Windows 上,呼叫_popen而不是popen.

相关内容

  • 没有找到相关文章

最新更新