You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MSYS2环境下g++编译仅生成.o文件无exe如何运行

问题根因

编译命令中添加的-c参数会告知g++仅执行编译、汇编步骤,跳过链接环节,因此执行后只会生成test_arb.o目标文件,不会产出可执行程序。
另外两个导致运行失败的细节:

  • Windows环境下(包括MSYS2中的g++),未指定输出文件名时编译生成的默认可执行文件为a.exe,并非Linux环境下的a.out,直接执行./a.out必然会提示找不到文件。
  • 你写的头文件搜索路径混用了正斜杠和反斜杠,MSYS2路径解析时容易出现转义问题,统一使用正斜杠可以避免这类无意义报错。
正确编译运行步骤
  • 去掉命令中的-c参数,完成编译+链接全流程。如果你的代码只需要引用arb目录下的头文件,不需要链接额外的二进制库,直接执行以下命令即可:
g++ -I"C:/Users/hp/Documents/Projects/arb" test_arb.cpp -o test_arb.exe
  • 如果执行上述命令时出现undefined reference类报错,说明代码依赖arb的预编译库文件,需要补充库搜索路径和链接参数。假设arb的库文件存放在C:/Users/hp/Documents/Projects/arb/lib路径下,库名为arb,使用如下命令编译:
g++ -I"C:/Users/hp/Documents/Projects/arb" -L"C:/Users/hp/Documents/Projects/arb/lib" test_arb.cpp -o test_arb.exe -larb
  • 编译无报错后,当前目录会生成test_arb.exe,在MSYS2终端执行./test_arb.exe即可运行程序。

内容的提问来源于stack exchange,提问作者ishandutta2007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 23:57:35