首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测电流gcc装置

检测电流gcc装置
EN

Stack Overflow用户
提问于 2018-03-19 14:31:58
回答 1查看 54关注 0票数 1

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

我如何使用gcc或其他假定安装在系统上的部件,连同gcc一起,来检索到on安装或可执行文件的路径?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-19 20:04:36

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

每当您调用gcc时,如果找到这样的程序,那么在调用环境变量PATH的值中列出的目录之一中找到的仅仅是第一个名为gcc的程序。在Linux和其他类似Unix的OSes上是正确的。在Windows上是正确的。

假设gcc有一个选项--whereami,使它在标准输出中打印其安装路径。您将得到的答案将是在调用时在操作gcc中找到的第一个PATH安装所给出的答案。在一个系统上可能有任意数量的GCC安装,每当在执行部分的gcc --whereami中第一次发现安装时,每个安装都会为该系统提供不同的答案。

在Windows上,通过不同的PATH设置选择不同的GCC安装是司空见惯的事情,而“GCC的本地安装”这一概念没有任何意义。但它也适用于Linux,有时也会使用。要点是:无论您运行什么命令来查找gcc的安装位置,您得到的任何答案原则上都取决于操作PATH --除非您使用绝对文件名运行该命令:

代码语言:javascript
复制
/usr/bin/gcc --whereami

当然,这等于在你问问题之前先决定答案。

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

因为这只能给出一个可操作的PATH的答案,而且由于PATH的值需要在PATH和Unix类的OSes上进行不同的解析,所以您也可以调用特定于操作系统的实用程序来做同样的事情。

类Unix:

代码语言:javascript
复制
$ which gcc
/usr/bin/gcc

Windows:

代码语言:javascript
复制
C:\>where gcc
C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev0\mingw64\bin\gcc.exe

请注意,在Windows情况下,我需要选择我的mingw-w64终端环境来获得答案。

若要以编程方式执行命令并获取其输出,请参见How can I run an external program from C and parse its output?。在Windows上,调用_popen而不是popen

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49365426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档