Моя настройка следующая:
- ОС: Windows 7 Home Premium 64-битная
- Eclipse: Helios 3.6.1 64-bit с CDT
и фотран
- Java SE Runtime
Окружающая среда: 1.6.0_21
- Горячая точка Java: 64-битная виртуальная машина сервера
(сборка 17.0-b17, смешанный режим)
- Cygwin 1.7.2 (32-разрядная версия)
Мое первоначальное тестовое приложение на Fortran просто печатает «Hello World!» и выходит.
Код создается и работает нормально, хотя со следующими 2 предупреждениями на вкладке «Проблемы» в Eclipse
Description Resource Path Location Type
Error launching external scanner info generator (gcc -E -P -v -dD C:/Users/Joe/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c) HelloFortran Unknown C/C++ Problem
Error launching external scanner info generator (gcc -E -P -v -dD C:/Users/Joe/workspace/.metadata/.plugins/org.eclipse.cdt.make.core/specs.c) HelloFortran Unknown C/C++ Problem
Проблема возникает при попытке отладки приложения как локального приложения на Fortran, что приводит к этой ошибке:
cygwin warning:
MS-DOS style path detected: C:\Users\Joe\workspace\HelloFortran
Preferred POSIX equivalent is: /cygdrive/c/Users/Joe/workspace/HelloFortran
.gdbinit: No such file or directory.
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
auto-solib-add on
Undefined command: "auto-solib-add". Try "help".
Error: dll starting at 0x76ba0000 not found.
Error: dll starting at 0x75230000 not found.
Error: dll starting at 0x76ba0000 not found.
Error: dll starting at 0x76aa0000 not found.
[New thread 7060.0x10dc]
[New thread 7060.0x16c0]
Я предполагаю, что точки входа не найдены, потому что он ожидает 32- / 64-битную DLL и получает другой тип (поправьте меня, если я ошибаюсь). Версия GDB выглядит следующим образом:
GNU gdb 6.8.20080328 (cygwin-special)
GDB configured as "i686-pc-cygwin"
Запуск GDB из командной строки дает:
[New thread 5768.0x15a0]
Error: dll starting at 0x76ba0000 not found.
Error: dll starting at 0x75230000 not found.
Error: dll starting at 0x76ba0000 not found.
Error: dll starting at 0x76aa0000 not found.
[New thread 5768.0x46c]
hellofortran () at ../HelloFortran.f90:1
1 program HelloFortran
Current language: auto; currently fortran
Если я правильно читаю, приложение работает в GDB, и я могу пройти через него, но о чем пропадают ошибки DLL?
Dependency Walker выдает следующие ошибки для моего HelloFortran.exe
Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
Похоже, что отсутствующие библиотеки DLL - это IESHIMS.DLL (2), что, исходя из моих быстрых исследований, не кажется большой проблемой, но я не вижу причин, по которым мое приложение должно ссылаться на эту библиотеку DLL, поэтому я не думаю, что это приводит к ошибкам в GDB.
Все модули имеют тип процессора x64, кроме:
CYGGCC_S-1.DLL
CYGGFORTRAN-3.DLL
CYGWIN1.DLL
HELLOFORTRAN.EXE
с типом процессора x86
Я обеспокоен тем, что отсутствующие ошибки DLL могут негативно отразиться на моей способности правильно отлаживать программу (хотя программа в конечном итоге будет работать на HPC на основе Unix, поэтому я не должен сталкиваться с этими проблемами, поскольку все эти библиотеки DLL кажутся делать с Cygwin).
Мои вопросы:
- Почему я получаю пропущенные ошибки DLL? (Исправит ли это переход на 32-разрядные версии Eclipse / JVM и т. Д.?)
- Я
хорошо, чтобы продолжить, или я должен решить
недостающие ошибки DLL (и если да,
как)?
Редактировать: Моя тестовая программа выглядит следующим образом:
program HelloFortran
! Force variable declaration
implicit none
! Print 'Hello World!' to the main output
write (*,*) 'Hello World!'
! End program
end program HelloFortran