notpad++ 搭配 gcc

GCC 是 GNU 编译器套装的简称(GNU Compiler Collection),一套编程语言编译器,以 GPL 及 LGPL 许可证所发行的自由软件,也是 GNU 项目的关键部分,也是 GNU 工具链的主要组成部分之一。GCC(特别是其中的 C 语言编译器)也常被认为是跨平台编译器的事实标准。

由于 GCC 适用于 Linux/UNIX 系统,Windows 系统本身不支持 GCC,所以就有了 MinGW 的诞生,MinGW 是把 GNU 从 Linux/UNIX 到 Windows 的移植应用。

MinGW, a contraction of "Minimalist GNU for Windows", is a minimalist development environment for native Microsoft Windows applications.

这是 MinGW 的官方解释,MinGW 是「Minimalist GNU for Windows」的缩写,是非常简洁 Microsoft Windows 应用开发环境。由于 MinGW 只支持 32 位,现在 MinGW-W64 的主要维护者 Kai Tietz 因为工作需要他想 MinGW 提供扩充 x64 支持,但对方态度很不友好。于是愤而 fork 出来,这就是 MinGW-W64 的由来。

MinGW-W64 是同时支持 32 位和 64 位的。甚至还支持 32 位和 64 位的交叉编译(启用 multilib 支持的 MinGW 发行版例如 mingw-builds 可以用 -m32 或 -m64 指定)。

下载安装 MinGW-w64

MinGW-w64 下载地址。这里下载的是在线安装包,安装前能自己选择参数,安装过程需要联网。建议选择的参数如下图所示,之后一路 next 就行了。

开始的 i686,x86_64 好理解,代表适用的处理器架构,i686 代表是 32 位处理器,x86_64 则代表 64 位处理器。posix 则代表线程模式 (threading model),windows 下还有另一种线程模式 win32。i686 前缀的版本肯定可以编译 32 位程序,但是能否编译 64 位程序则取决于编译器版本所用的异常实现模型 seh,sjlj。

  • sjlj 适合 32/64 位程序 (但是它会带来轻微的性能损失, 在异常重的代码中有 15%)
  • seh 只能用于 64 位程序

通过离线安装包来安装 MinGW-w64

在线安装需要联网才有用,我还是喜欢下载离线安装包。下载后解压再添加环境变量就可以了。

MinGW 离线安装包下载地址

添加环境变量

按下图配置的是当前用户的环境变量,如果是要为所有用户配置环境变量就在系统变量中添加。

在命令提示符(cmd) 中分别输入 gcc,如下则说明安装成功

C:\Users\82665> gcc
gcc.exe: fatal error: no input files
compilation terminated.

nppExec 插件编译运行 gcc

下载 nppExec 插件,解压将文件拷贝到 Notepad++\plugins 下,重启 notepad++。

勾选「Show Console」、「No internal messages」、「Save all files on execute」、「Follow $(CURRENT_DIRECTORY)」。然后点击 Plugins->NppExec->Execute,输入脚本。

gcc $(FILE_NAME) -o $(NAME_PART).exe
./$(NAME_PART).exe

然后点击 save,名字为「run gcc」。

进入 NppExec->Advanced Options 里,然后在左下方 Associated script 选择我们之前的「run gcc」,Add/Modify 然后 OK。

配置快捷键

进入 Setting->Shortcut Mapper,在 Plugin commands 面板,双击填写快捷键。我们把上面的「run gcc」填写为 Ctrl+R。

然后去我们的程序中按 Ctrl+R 就会运行这个 C/C++ 文件,以上就是所有的步骤。

其中,$(FILE_NAME)$(NAME_PART) 都是 Notepad 的内置变量,上网搜搜还有类似的变量可以在脚本中使用。

参考文章

最新文章

  1. eclipse发布web项目到生产环境的方式汇总(tomcat)
  2. linux常用命令-文件处理命令
  3. phpwind < v6 版本命令执行漏洞
  4. Java远程调试代码不一致问题汇总
  5. LTE工作过程
  6. 重构第16天 封装条件(Encapsulate Conditional)
  7. List 中对象属性排序
  8. Java对象转xml报文和xml报文转Java对象帮助类
  9. QQ拼音还是不行哇
  10. 数学(扩展欧几里得算法):HDU 5114 Collision
  11. arm linux kernel启动之start_kernel
  12. spserver 开源服务器框架研究与分析
  13. nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
  14. "《算法导论》之‘排序’":线性时间排序
  15. 手把手带你入门kubernetes部署
  16. python语法与c++不同点
  17. 关于进程、线程、应用程序域(AppDomain)
  18. 【转】Chrome 控制台新玩法-console显示图片以及为文字加样式
  19. Spark JDBC To MySQL
  20. C#打印0到100的素数

热门文章

  1. 打通 Spark 系统运行内幕机制循环流程
  2. PLSQL使用绑定变量
  3. Oracle 查看占用undo大的sql语句
  4. azkaban部署
  5. 二、基于事件的异步编程模式(EAP)
  6. Micro
  7. scanf函数读取缓冲区数据的问题
  8. @SuppressWarnings注解用法详解
  9. SSM框架之多数据源配置
  10. 前端使用ajax传到后台的实体类的多个属性,直接用Map接收