compile,build和execute的区别

一个c程序的生成要经历以下步骤: 
1.编写文本代码,生成c或cpp文件,这时候它还是文本的; 
2.编译,就是compile,由c编译程序对你写的代码进行词法和句法分析,发现并报告错误,有错时编译不能通过。如若无错,则生成中间代码,扩展名为obj,此时它便是二进制的了; 
3.连接,在汇编里称link,在c里叫生成,即build,它的作用是生成可执行的exe文件。由于一个程序的源码可由多个文件组成。这些文件在第二步 中分别编译,生成各自的目标文件,这一步的作用便是将这些obj文件,以及程序中需要的其它库文件(dll除开),统一到一个文件中来,形成单个的exe 文件。此exe文件便可以在操作系统下直接运行了。 
上述第二步做完中间代码生成的工作后还有个代码优化,这里就不详讲了。 

compile、build分别对应编译和连接这两个过程。execute的意思是执行,即生成了exe文件后运行它。如果你的程序有修改,点这一项它会 弹出窗口问你是否重新编译和连接,也就是它可以自动把前面的工作都做了。也就是说,vc菜单里的execute功能如下: 
1.程序有修改时,或者没有做前面的编译连接工作时 
execute=compile+build+执行; 
2.程序编译连接好后 
execute仅仅是执行,不再做前面两项工作。 
当程序有修改时,选择execute只重编译和连接有改动的内容,但这样做有时候会出错,这时可选择build菜单下的rebuild all,重新编译、连接所有文件。 

总之,c程序的生成可图示如下: 
编写源代码->编译->连接,也叫生成->运行  
对应的各个阶段处理的文件的扩展名为: 
c或cpp->obj->exe 。 

c程序是编译执行的,还有一种程序是解释执行的,如java,它的源文件经过编译后形成扩展名为class的中间代码,之后不做连接生成exe文件,而是直接将这种.class的中间代码拿到java虚拟机平台上,由解释器解释执行。这种方式效率较低,但较灵活。
### Maven 编译失败解决方案 Maven 编译过程中出现 `Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile)` 错误通常是由于编译器插件配置不正确或 JDK 版本不匹配引起的。以下是详细的分析解决方法。 #### 1. 配置 Java 版本 如果项目的源码版本 (`source`) 目标版本 (`target`) 不明确,可能会导致此错误。可以通过在 `pom.xml` 中显式声明所需的 Java 版本来解决问题: ```xml <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> ``` 这一步确保了 Maven 使用的 Java 版本与实际开发环境一致[^2]。 #### 2. 更新 maven-compiler-plugin 插件版本 有时旧版本的 `maven-compiler-plugin` 可能无法支持较新的 JDK 或其他依赖项。建议升级到最新稳定版本(例如 3.8.1),并将其添加到 `pom.xml` 的 `<build>` 节点下: ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> </build> ``` 通过更新插件版本可以兼容更多现代功能,并减少潜在冲突[^3]。 #### 3. 检查本地 JDK 安装 确认当前使用的 JDK 是否满足项目需求。运行以下命令验证安装路径以及版本号是否正确: ```bash mvn -v ``` 输出应类似于以下内容: ``` Apache Maven 3.x.x Java version: 11.0.x, vendor: Oracle Corporation Java home: /path/to/jdk-11 ``` 如果不符,则需调整系统的 JAVA_HOME 环境变量指向合适的 JDK 版本[^3]。 #### 4. 查阅完整的堆栈跟踪日志 当遇到构建失败时,执行带 `-e` 参数或者更详尽的日志记录选项 `-X` 来获取更多信息以便定位具体原因: ```bash mvn clean install -e # 或者启用调试模式 mvn clean install -X ``` 这些额外的信息可以帮助识别是否有语法问题或其他隐含异常存在[^3]。 #### 5. 清理缓存重试 某些情况下可能是临时文件损坏引起的问题,尝试清理后再重新构建可能有效果: ```bash mvn clean mvn compile ``` 以上操作会移除之前生成的目标目录及其内容从而强制刷新整个流程[^1]。 --- ### 总结 综合来看,该类问题是因编译设置不当所致,主要涉及三个方面——即明确指明 java source/target level;选用适配良好且最新的 compiler plugin edition;最后还需保障所运用 jvm environment 同步协调无误。按照上述指导逐一排查通常能够顺利化解此类困境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值