【问题标题】:NetBeans IDE Dev (Build 201804200002) "Build Failed"NetBeans IDE 开发(构建 201804200002)“构建失败”
【发布时间】:2019-05-30 07:16:08
【问题描述】:

我正在尝试使用带有基本“Hello World”编程应用程序的 NetBeans IDE 来学习 Fortran。但是,我不断收到“构建失败”。我不知道为什么?我已经安装了 MinGW。然后我在环境变量中配置了 PATH。最后,我安装了 NetBeans。这是我在 NetBeans 中编写的:

PRINT*, 'Hello World' 
END

以下是我得到的错误和历史记录:

cd 'C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1'

C:\MinGW\msys\1.0\bin\make.exe -f Makefile CONF=Debug

"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf

make.exe[1]: 进入目录 `/c/Users/ABCD/Documents/NetBeansProjects/CppApplication_1'

"/C/MinGW/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/cppapplication_1.exe

make.exe[2]: 进入目录 `/c/Users/ABCD/Documents/NetBeansProjects/CppApplication_1'

mkdir -p 构建/调试/MinGW-Windows

gfortran -c -g -o build/Debug/MinGW-Windows/testfortran.o testfortran.f90

mkdir -p dist/Debug/MinGW-Windows

g++ -o dist/Debug/MinGW-Windows/cppapplication_1 构建/调试/MinGW-Windows/main.o 构建/调试/MinGW-Windows/testfortran.o

build/Debug/MinGW-Windows/testfortran.o:在函数“main”中:

C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/testfortran.f90:2: 'main'的多重定义

构建/调试/MinGW-Windows/main.o:C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/main.cpp:21: 首先在这里定义

build/Debug/MinGW-Windows/testfortran.o:在函数“MAIN__”中:

C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/testfortran.f90:1: 对 `_gfortran_st_write' 的未定义引用

C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/testfortran.f90:1: 对 `_gfortran_transfer_character_write' 的未定义引用

C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/testfortran.f90:1: 对 `_gfortran_st_write_done' 的未定义引用

build/Debug/MinGW-Windows/testfortran.o:在函数“main”中:

C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/testfortran.f90:2: 对 `_gfortran_set_args' 的未定义引用

C:\Users\ABCD\Documents\NetBeansProjects\CppApplication_1/testfortran.f90:2: 对 `_gfortran_set_options' 的未定义引用

collect2.exe:错误:ld 返回 1 个退出状态

make.exe[2]: *** [dist/Debug/MinGW-Windows/cppapplication_1.exe] 错误 1

make.exe[2]: 离开目录 `/c/Users/ABCD/Documents/NetBeansProjects/CppApplication_1'

make.exe[1]: *** [.build-conf] 错误 2

make.exe[1]: 离开目录 `/c/Users/ABCD/Documents/NetBeansProjects/CppApplication_1'

make.exe": *** [.build-impl] 错误 2

BUILD FAILED(退出值2,总时间:1s)

我不明白该如何解决?如果我是 Fortran/C++ 世界的初学者,我将不胜感激。

【问题讨论】:

  • 请注意错误信息的格式:呈现出来的任何东西都很难看清楚。但是,您似乎正在使用 g++ 而不是 gfortran 进行编译/链接?
  • 谢谢,@francescalus。我编辑了我的问题。这是更好的写作方式吗?另外,我该如何解决它使用 g++ 而不是 gfortran 编译的问题?
  • 更好,谢谢。也可以尝试作为代码块而不是引用格式,但这更具可读性。至于使用 g++ 链接(和两个目标文件),现在更明显了,我们需要了解 IDE 的人。
  • @francescalus 因为你非常精通 Fortran(我看到了你的个人资料 :)),我想知道你能否告诉我如何让 fortran 开始学习。我所做的上述方式是跟随这个 youtuber 的,他展示了如何安装 Fortran:youtube.com/watch?v=wGv2kGl8OV0
  • @Ska 我想知道您是否正确安装了gfortran。看起来你正在运行 Windows,那么如果你打开一个 Command Prompt 窗口并输入 gfortran --version,你会看到什么?

标签: gcc netbeans build fortran


【解决方案1】:

我按照您在评论中链接到的视频教程进行操作,但也遇到了相同的构建错误。需要两个不相关的更改来解决它们:

  • 要解决 multiple definition of 'main' 错误,请参阅 Stack Overflow 问题 gfortran multiple definition of main 的已接受答案。只需将 C++ 和 Fortran 示例的源代码复制并粘贴到您的项目文件中即可。

    重建您的项目,multiple definition of 'main' 错误应该消失了。

  • 但是,这并不能修复 undefined reference 错误。解决方案是在(旧的)NetBeans web site:

    所以,我们在链接器窗口中添加对 Fortran 的引用时 图书馆通过调出图书馆窗口,你会注意到一个添加 此页面上的选项按钮....这是我们放置 -lgfortran 的位置 其他选项下的选项。 Presto,C代码将编译并 不会抱怨缺少 Fortran 引用。

修复undefined reference错误所需的具体步骤是:

  • Projects 窗口中选择您的项目,右键单击并从上下文菜单中选择 Properties 以打开 Project Properties 窗口。李>
  • Categories 列表中选择 Build > Linker
  • 项目属性窗口的右侧,单击...按钮。
  • Debug - Libraries 窗口中,单击 Add Option... 按钮。
  • 选择选项窗口中:
    • 单击Other Option 单选按钮。
    • 在文本字段中输入 -lgfortran,然后按 OK
  • 单击“确定”关闭调试 - 库 窗口。您现在应该看到 -lgfortran 选项显示在 Project Properties 窗口中:

进行上述更改后,项目构建没有错误:

cd 'D:\NB82\CppApplication_5'
C:\msys\1.0\bin\make.exe -f Makefile CONF=Debug clean
"/C/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .clean-conf
make.exe[1]: Entering directory `/d/NB82/CppApplication_5'
rm -f -r build/Debug
rm -f *.mod
make.exe[1]: Leaving directory `/d/NB82/CppApplication_5'

CLEAN SUCCESSFUL (total time: 558ms)
cd 'D:\NB82\CppApplication_5'
C:\msys\1.0\bin\make.exe -f Makefile CONF=Debug
"/C/msys/1.0/bin/make.exe" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make.exe[1]: Entering directory `/d/NB82/CppApplication_5'
"/C/msys/1.0/bin/make.exe"  -f nbproject/Makefile-Debug.mk dist/Debug/MinGW-Windows/cppapplication_5.exe
make.exe[2]: Entering directory `/d/NB82/CppApplication_5'
mkdir -p build/Debug/MinGW-Windows
rm -f "build/Debug/MinGW-Windows/main.o.d"
g++    -c -g -MMD -MP -MF "build/Debug/MinGW-Windows/main.o.d" -o build/Debug/MinGW-Windows/main.o main.cpp
mkdir -p build/Debug/MinGW-Windows
gfortran   -c -g -Wall -o build/Debug/MinGW-Windows/newfortranFreeFormatFile.o newfortranFreeFormatFile.f90
mkdir -p dist/Debug/MinGW-Windows
g++     -o dist/Debug/MinGW-Windows/cppapplication_5 build/Debug/MinGW-Windows/main.o build/Debug/MinGW-Windows/newfortranFreeFormatFile.o -lgfortran
make.exe[2]: Leaving directory `/d/NB82/CppApplication_5'
make.exe[1]: Leaving directory `/d/NB82/CppApplication_5'

BUILD SUCCESSFUL (total time: 1s)

运行 Fortran 项目然后产生预期的输出:

main in C++
 FortMain

RUN SUCCESSFUL (total time: 2s)

【讨论】:

    【解决方案2】:

    您已经创建了一个 C++ 项目,然后是一个 fortran 文件。 您的 IDE 为您创建了一个 c++ 主目录。我猜你看过的教程中没有。 如果我没看错,那么答案很简单:

    只需右键单击并删除此 main.c 即可:-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-06
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-29
      相关资源
      最近更新 更多