Eclipse搭建C语言开发环境:JDK、CDT、MinGW版本对齐与排错 简介这份开发文档面向希望在 Eclipse 平台上搭建 C/C 开发环境、但缺少完整配置经验的读者重点解决 Eclipse、CDT 与 MinGW 配合使用时的安装顺序、环境变量设置及工程创建等问题。文档以 EclipseCDTMinGW 为主线先说明 Eclipse SDK 与 CDT、打包版 Eclipse IDE for C/C、JDK 和 MinGW 的下载准备再依次讲解软件安装、Path 与 LIBRARY_PATH 等环境变量配置、CDT 中 Binary Parser 与 make 命令的调整以及新建 C 工程的编译运行流程并配有操作界面图示便于读者按步骤对照排查。资源包为 1 个 docx 文件约 903KB内容集中、查阅方便适合具备基本 Eclipse 操作经验、需要快速完成 C 语言开发环境配置的读者参考。目前已有 2211 人学习。1. Eclipse 搭建 C 语言开发环境JDK、CDT、MinGW 这三个组件必须先对齐上次有人拿着装好的 Eclipse 来找我能打开CDT 也显示装了编个 helloworld 却报 make 找不到。在 Eclipse 搭建 C 语言开发环境这套组合里Eclipse 只是外壳真正干编译活的是 MinGW把两者接起来的是 CDT任何一环版本或者路径没对上表现出来的都是同一句报错。Eclipse SDK 3.3.1 那会儿没有内置编译器CDT 也不带编译器新手最常见的结果就是编辑器里一堆红叉、控制台一片空白。这套装法适合手里已经有 Eclipse、想顺手写 C/C 的人也适合需要一份能照着走完的开发文档的人。下面按选版本、解压安装、配环境变量、改 CDT 参数、排查、验证的顺序走一遍。2. 装前先定版本Eclipse SDK 3.3.1 加 CDT还是直接拿一体化 C/C 包在开始安装之前得先把版本关系理清楚。这套东西最麻烦的地方在于三个组件各自发布、各自升级谁跟谁配得上没有一个统一的地方写着网上能找到的开发文档大多是当时那个年代的写法版本一提就过时。先把两条安装路线摆清楚再谈 JDK 和 MinGW 的版本对位后面解压才不会反复折腾。2.1 两条安装路线的差别拼装和一体化包路线 A 是拼装。先从 eclipse.org/downloads 拿 Eclipse SDK当时的最新版本是 3.3.1再从 eclipse.org/cdt/downloads.php 拿一份和这个 Eclipse 版本配套的 CDT。两个包分别下载、分别解压靠覆盖同一个 eclipse 目录把 CDT 塞进去。路线 B 是拿现成的。直接下载 Eclipse IDE for C/C Developers官方把 Eclipse 核心和配套的 CDT 打成了一个包解压完就带 C/C 开发能力省掉“找对 CDT 版本”这一步。两条路的核心差别不在安装动作而在版本是谁替你配的。路线 A 里 CDT 和 Eclipse 的版本关系由你自己负责下载页上写得比较简略下错一版覆盖上去启动时就弹插件错误路线 B 里这个关系官方已经处理好了你只需要确认包名里那个 Eclipse 大版本是不是你想要的。代价是路线 B 的包体更大而且如果你本来就用这个 Eclipse 写 Java换成一体化包之后还得把 Java 相关的插件生态重新对一遍。对比项路线 AEclipse SDK CDT路线 BEclipse IDE for C/C下载数量两个包需自行配版本一个包版本已打包对齐安装动作解压两次第二次覆盖合并解压一次升级 CDT单独替换 CDT 包即可整体替换 IDE 包主要风险CDT 与 Eclipse 版本错位包较大Java 生态需重新核对适合场景一个 Eclipse 同时挂多语言插件只做 C/C想少折腾我的取舍是机器上只跑 C/C直接走路线 B出问题的面小一半如果这台 Eclipse 上已经挂了一堆 Java 相关的东西不想推倒重来就走路线 A但 CDT 的版本一定要去下载页核对那个 Eclipse 版本标注。下面第 3、4 章的操作按路线 A 展开因为路线 A 覆盖了路线 B 的全部动作——路线 B 相当于跳过了 CDT 覆盖那一步。2.2 JDK 与 MinGW 的版本对位关系Eclipse 本身是 Java 写的没有 JDK 起不来这一点很多人会漏。在装 Eclipse 之前先确认机器上有 JDK并且 JAVA_HOME 和 Path 都已经配好了命令行里敲 java -version 能有版本输出再去解压 Eclipse。这一步没做双击 eclipse.exe 会出现一个写着“Java runtime environment not found”之类的对话框或者干脆闪一下就没反应。C/C 编译器这块用 MinGW-3.1.0-1。这个版本自带的 gcc/g 是 3.2.3所以后面配 CPLUS_INCLUDE_PATH 时目录名里会出现 3.2.3 这个号这不是随便写的是跟 MinGW 版本绑死的。这也是很多人换了个新一点的 MinGW 之后照抄网上那段变量值、结果编译报找不到头文件的原因。组件本文使用的版本关键点Eclipse SDK3.3.1先装 JDK 并配好环境变量再解压CDT与 Eclipse 3.3.1 配套的那一版版本错位会导致插件加载失败JDK能正常运行 Eclipse 即可命令行 java -version 有输出MinGWMinGW-3.1.0-1自带 gcc/g 3.2.3路径要与之对应装好之后可以顺手验证一下编译器开个 cmd敲 gcc -v能看到 gcc version 3.2.3 之类的输出就说明 Path 生效了再敲 g -v 确认 C 编译器也在。这两个命令的输出里还带着配置信息后面如果路径配错了对比这里的输出能很快定位是哪一段没生效。3. 解压安装Eclipse 放在 C 盘、CDT 覆盖合并、MinGW 装进 C:\MinGW这一章是整套环境里最容易出错的部分不是命令有多难而是环境变量里几个字符的位置很关键。Eclipse 是绿色包解压就算安装MinGW 走安装程序装完必须手动补环境变量。我按实际装机顺序往下写每一步都给出现场能看到的现象方便你自己对照。3.1 Eclipse SDK 与 CDT 的解压覆盖顺序Eclipse SDK 解压到 C:\ 下面解压完会多出一个 C:\eclipse 目录里面就是整个 IDE。目录名和位置其实没那么讲究只要路径里没有中文和空格后面配变量能少一堆事我习惯就放 C 盘根目录。CDT 解压出来同样是名为 eclipse 的文件夹。所以解压到 C:\ 的时候系统会提示目标文件夹已存在问要不要合并选“是”让它覆盖对应文件CDT 就装完了。顺序不能反。一定要先有 Eclipse再拿 CDT 往上盖。反过来先解压 CDT 再解压 Eclipse SDKSDK 会覆盖掉 CDT 的部分文件结果是插件不全启动之后菜单里找不到 C/C 那一项或者找得到但点了没反应。提示覆盖前确认 C:\eclipse 是这次刚解压出来的。顶着旧版本往上盖旧插件残留和新装的东西混在一起后面排查起来会很难受。覆盖完可以先不等 CDT 配置直接双击 eclipse.exe 看能不能起来。能进欢迎页、菜单栏里有 Window 这一项说明主体没问题起不来先去查 JDK别在这个阶段怀疑 CDT。3.2 MinGW 装到 C:\MinGWPath 里那个分号很关键MinGW 走安装程序装到 C:\MinGW。装完之后必须配环境变量否则命令行和 Eclipse 都找不到它。右键“我的电脑”→属性→高级→环境变量在系统变量里找到 Path编辑在末尾追加 C:\MinGW\bin;。关键就在分号。如果原来的 Path 值不是以分号结尾一定要在 C:\MinGW\bin 前面补一个分号把新路径和上一条隔开。; 系统变量 Path 末尾追加注意 C:\MinGW\bin 前面的分号 Path...;%SystemRoot%\system32;...;C:\MinGW\bin;少了这个分号Path 会变成“...\SomePathC:\MinGW\bin;”这种样子Windows 读的时候会把两段拼成一个根本不存在的路径。表现就是 gcc.exe 明明躺在 C:\MinGW\bin 里命令行却一直提示“不是内部或外部命令”。这个坑我见过不止一次基本每次都是分号的问题。改完变量不要急着开 Eclipse先新开一个 cmd 窗口敲 gcc -v。这里要新开窗口已经开着的 cmd 和 Eclipse 读的还是启动那一刻的环境变量改完不重启等于没改。3.3 三个头文件变量LIBRARY_PATH、C_INCLUDE_PATH、CPLUS_INCLUDE_PATH光有 Path 还不够。C 和 C 的标准库头文件放在 C:\MinGW\include 下面编译器得知道去哪找库文件也得知道去哪链接。这一步就去用户变量里新建三项。; 用户变量里新建路径必须和本机 MinGW 实际目录一致 LIBRARY_PATHC:\MinGW\lib C_INCLUDE_PATHC:\MinGW\include CPLUS_INCLUDE_PATHC:\MinGW\include\c\;C:\MinGW\include\c\3.2.3\mingw32;C:\MinGW\include\c\3.2.3\backward;C:\MinGW\include逐项说明一下。LIBRARY_PATH 给链接器用指向 C:\MinGW\lib链接的时候按这个路径找 .a、.dll 之类的库文件。C_INCLUDE_PATH 是 C 的头文件搜索路径指向 C:\MinGW\include。CPLUS_INCLUDE_PATH 是 C 的头文件搜索路径这条最长值里分了四段分别对应 C 标准头、mingw32 平台相关头、backward 兼容头和 C 头文件目录段与段之间用分号隔开。重点在那个 3.2.3。它是 MinGW-3.1.0-1 自带 gcc/g 的版本号目录名必须和 C:\MinGW\include\c 下实际存在的目录一模一样。换了别的 MinGW 版本这个号也得跟着改。写错了的表现很典型代码里 #include 或者 #include 直接报找不到文件红叉挂在第一行但 gcc -v 又明明是好的。注意这三项配完最好注销重登一次或者干脆重启。环境变量对已启动的进程不生效这一点在 Windows 上尤其容易忘。配完别急着验证先打开资源管理器进 C:\MinGW\include\c 看一眼实际目录名再回头核对自己写的 CPLUS_INCLUDE_PATH比对着抄更靠得住。4. 让 CDT 认出 MinGWPE Windows Parser 和 make.exe 这两处必须改环境变量配好只是让系统认识 MinGWEclipse 里还有两处默认设置是按 Linux 的思路设计的不改的话表现就是编译绕不过去、可执行文件也看不见。这一章两个改动一个解决“编出来的东西认不出”一个解决“构建命令对不上号”。4.1 Binary Parser 切到 PE Windows Parser启动 Eclipse第一件事是告诉 CDT 它现在面对的是 Windows 上编出来的可执行文件。菜单栏 Window → Preferences左边树状菜单展开 C/C → Make → New Make Projects右侧找到 Binary Parser 这一栏勾选 PE Windows Parser把其他几个ELF Parser 之类取消掉点 OK。CDT 默认按 ELF 格式解析构建产物那是类 Unix 系统上用的。MinGW 在 Windows 上生成的是 PE 格式的 exeCDT 拿默认 parser 去解析结果就是编译其实成功了、exe 也确实生成了但工程浏览器里看不到这个文件右键也没有本地运行的入口。很多人以为编译没通过其实只是被 CDT 过滤掉了。提示Preferences 里这一项只对之后新建的工程生效。已经建好的工程要单独去工程属性里看 C/C Build 下的 Parser 设置改成同一项。这个设置的原理其实很简单parser 决定 CDT 怎么读构建产物、怎么在界面上呈现符号和可执行文件。选错了 parser编译链本身是通的只是 Eclipse 看不到结果界面上表现得很像编译失败。4.2 mingw32-make.exe 复制成 make.exe 的取舍CDT 里控制构建的默认命令是 make。MinGW 提供的 make 程序叫 mingw32-make.exe两边名字对不上构建的时候就会报找不到 make。改法有两种。第一种是改 CDT 的配置把所有对 make 的调用换成 mingw32-make。麻烦在于这个名字散落在很多地方C/C → Make → New Make Projects 下的构建器设置、工程属性里的 Build Command、还有各处的默认值。漏一处下次新建工程照样失败。原文里也直说这样改非常麻烦我当时照做了一遍确实烦。第二种是我常用的把 C:\MinGW\bin\mingw32-make.exe 复制一份重命名成 make.exe放在同一个目录# 在 C:\MinGW\bin 目录下执行复制一份改名 copy mingw32-make.exe make.exe这样 CDT 调 make 的时候Windows 在 Path 里找的就是这个副本不用动任何 CDT 配置。代价有两个以后升级 MinGWmake.exe 这个副本不会跟着更新得记得重新复制一次另外如果哪天装了个自带 make.exe 的东西混进 Path谁先被调用要看 Path 顺序心里要有数。我一般选第二种因为它只改文件系统、不改 IDE 配置重装 Eclipse 之后这个副本还在省一遍重复劳动。4.3 用一个 Hello World C Project 把工具链走通配置改完就能建工程了。Eclipse 以 Project 为单位干活不属于任何工程的单个源文件可以打开编辑但编译不了这是新手最容易搞混的一点。File → New → C Project填工程名Project type 选 Executable 分类下的 Hello World C ProjectFinish。Executable 对应 Managed C Project保存后自动调用编译器另一个 Makefile project 要自己写 makefile先不要碰。新建完成后界面大致是左侧 Project Explorer中间编辑器右侧 Outline下方是 Console 控制台。默认生成的代码大概是这样// CDT 自动生成的 Hello World 示例先跑通再改 #include iostream int main() { std::cout !!!Hello World!!! std::endl; return 0; }保存之后 CDT 自动编译编译信息输出到 Console。有错误的话出错行左边会出现小红叉双击能跳到对应位置。编译成功Project Explorer 里会多出 MyProject.exe 这样的可执行文件。右键它 → Run As → Local C/C Application程序运行标准输出打在下方控制台。想写纯 C把源文件后缀改成 .c内容换成 stdio.h 那一套Managed Build 会自动切到 gcc 去编。工程类型选 C Project 下的 Hello World ANSI C Project 也一样本质是同一个自动构建流程。5. 常见问题排查Eclipse CDT MinGW 五条踩坑记录这套环境装坏之后基本都表现为同一句“编译不了”但背后的原因能分出好几类。下面五条是我见过和修过最多的每条按现象、原因、解决三段写方便按图索骥。5.1 构建阶段的三个报错记录一Program “make” not found in PATH现象新建工程保存Console 直接报 Program “make” not found in PATH代码一行没编工程里也没有 exe。原因CDT 按 make 这个名字去调构建工具MinGW 装出来的程序叫 mingw32-make.exePath 里没有名为 make 的可执行文件。解决按 4.2 把 mingw32-make.exe 复制成 make.exe或者在工程属性和 Preferences 里把 Build Command 改成 mingw32-make。改完关掉 Eclipse 重新开让它重新读一次环境变量。记录二iostream: No such file or directory现象代码里 #include 或 #include stdio.h编译直接报找不到头文件红叉挂在第一行。原因C_INCLUDE_PATH / CPLUS_INCLUDE_PATH 没配或者配了但目录名写错。最常见的是照抄了别人机器上的值里面版本号是 3.4.x自己机器上是 3.2.3那个路径根本不存在。解决进 C:\MinGW\include\c 看实际目录名把 CPLUS_INCLUDE_PATH 里的版本号改成一致的。改完注销重登重启 Eclipse。改完还是不行就敲 echo %CPLUS_INCLUDE_PATH% 看变量有没有真的生效。记录三命令行里 gcc 能用Eclipse 里就是找不到现象新开 cmdgcc -v 有版本输出切到 Eclipse 新建工程还是报找不到编译器。原因两个可能。一是 Eclipse 在改 Path 之前就启动了进程拿的是旧环境变量二是 Path 末尾少写分号新路径和上一条粘在一起解析出一个不存在的目录。解决先关 Eclipse 再重新启动不行就把 Path 整段拉出来看分号位置重点看 C:\MinGW\bin 前面有没有分隔符。这一步看着简单实际排查时先看它能排掉一半的“玄学”问题。5.2 运行与插件阶段的两种异常记录四编译过了Run As 里没有 Local C/C Application现象Console 显示构建成功Project Explorer 里也能看到 exe右键 Run As菜单里却只有 Run Configurations。原因Binary Parser 还是默认的 ELFCDT 不认 PE 格式的产物没把它当成可执行文件。解决回到 4.1把 PE Windows Parser 勾上重新构建一次。已经建好的工程去工程属性里单独改Preferences 那一项只影响新建工程。记录五CDT 覆盖完Eclipse 启动报插件错现象按路线 A 装完Eclipse 启动弹出一串插件相关的错误或者菜单栏里干脆没有 C/C 项。原因CDT 版本和 Eclipse 版本不配套。CDT 是挂在 Eclipse 插件体系上的版本错位就会加载失败血泪经验是别信“最新版总没错”。解决回 CDT 下载页找和当前 Eclipse 版本标注一致的那一版重新下载覆盖。折腾两轮还对不上就换路线 B用 Eclipse IDE for C/C 一体化包把对大版本这个环节直接省掉。我自己的习惯是这台机器只做 C/C 就用一体化包需要在一个 Eclipse 里同时挂 Java 和 C/C 才走拼装。6. 装完之后怎么验证三步自检加一个最小 C 工程装完别急着写业务代码先按三步走一遍自检能省掉后面大量“到底是环境问题还是代码问题”的怀疑。第一步在命令行。新开一个 cmd逐条执行输出对得上再往下走。检查项命令预期结果C 编译器gcc -v输出版本信息含 3.2.3 字样C 编译器g -v输出版本信息与 gcc 一致makemake -v输出 GNU Make 版本信息JDKjava -version输出 Java 版本信息第二步在 Eclipse 里。新建一个 C Project工程类型选 Executable 下的 Hello World ANSI C Project把生成的源文件替换成下面这段最小的// 最小验证工程只做一件事确认编译、运行两个环节都通 #include stdio.h int main(void) { printf(env ok\n); return 0; }保存后看 Console没有红字报错就说明构建链通了再看 Project Explorer 里有没有生成的可执行文件有就说明 Binary Parser 认对了右键 → Run As → Local C/C Application控制台打出 env ok三个环节全部闭环。第三步看目录。编译产物一般落在工程目录下的 Debug 或者 Release 子目录里进去确认 exe 的大小不为 0。有些时候界面显示构建成功但产物是空的多半是链接阶段出了问题回头去看 Console 里有没有被忽略的 warning。提示这三步里任何一步失败先回去看第 5 章对应记录不要直接改代码。环境没通的时候改代码等于在黑匣子里猜。从那以后我每次装这套环境都会先开 cmd 跑一遍 gcc -v、make -v再开 Eclipse 走一次 Hello World两处都过了才动手写别的。这个习惯看着笨但省下来的时间远比多花的多。希望帮到你。本文还有配套的精品资源点击获取