关于gcc on windows的“拒绝访问”问题
关于gcc on windows的“拒绝访问”问题
周银辉
装了个GCC on Windows,本想可以爽一把,但不料:
打开gcc所在目录,发现gcc.exe只有56个字节,咦,太小了吧,什么东东哦,用ultraEdit打开:
注意到了吗?这是一个“symlink” (符号链接,linux下链接的一种,还有一种是硬链接,这里你可以把符号链接简单地理解为windows下的“快捷方式”),呵呵,windows怎么可能认识符号链接这种高级货。
并且我们注意到这个符号链接是指向etc/alternatives/下的,说明其肯定是为了兼容多个版本的gcc而搞的这么个符号链接。
在gcc.exe所在的目录下,发现了两个shell脚本(set-gcc-default-3.sh和set-gcc-default-4.sh),更是证明了这个观点啊,打开set-gcc-default-4.sh瞧瞧:
# We only switch the alternatives that exist for both compilers;
# gdc, gpc, g77 and gfortran never get switched.
for x in gcc g++ gcj gnat ; do
/usr/sbin/alternatives --set $x /usr/bin/$x-4.exe
done
看到了吗,gcc, g++, gcj, gnat 都被映射到了对应的XXX-4版本
所以,解决方案就很容易得到啦:
1, 删掉 gcc.exe, g++.exe, gcj.exe, gnat.exe 这四个东东,要着也没用,windows不认识
2, 在相同目录下,选择你所需要的gcc,g++, gcj, gnat版本,我这里选择xxx-4版(其实我电脑上根本就没-3版),所以我选中gcc-4.exe, g++-4.exe, gcj-4.exe, gnat-4.exe, 复制他们得到各个副本,并将副本重命名为gcc.exe, g++.exe, gcj.exe, gnat.exe
3, 如果你电脑上有多个版本,并且某个时候又想切换到其他版本上去,那么goto step 1
注意:gcj和gnat不一定存在于你的电脑中,没有的话,略过即可,其他的诸如abc.exe拒绝访问的话,同理咯...
问题搞定:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述