Я пытаюсь запустить исполняемый файл в течение некоторого времени, но не могу заставить его работать. Я уже дал разрешения chmod + x, но файл, похоже, запускается, но не работает должным образом.
Это результат ls -l:
-rw-rw-r-- 1 gabriel gabriel 620 jan 22 2020 plasys.inp
-rwxrwxrwx 1 gabriel gabriel 29536 jan 22 2020 Resonalyzerv2
-rwxrwxrwx 1 gabriel gabriel 28792 jan 22 2020 Superatlasv2
Мне нужно использовать и Resonalyzer, и Superatlas, но когда я выполняю с './file', они просто "запускаются" и возвращают меня к терминалу, когда они должны попросите меня ввести некоторые значения, а затем вернуть мне результаты. Вот терминал, когда я пытаюсь их выполнить:
(base) gabriel@brainiac:~/IC/tabare/linux$ ./Resonalyzerv2
(base) gabriel@brainiac:~/IC/tabare/linux$
и:
(base) gabriel@brainiac:~/IC/tabare/linux$ ./Superatlasv2
(base) gabriel@brainiac:~/IC/tabare/linux$
Мой профессор использовал те же файлы, что и я, и проделал тот же процесс, и это сработало для него. Я использую ubuntu 20.04, и он 16.04
EDIT
ldd для Resonalyzer приводит к:
linux-vdso.so.1 (0x00007ffec50af000)
libf2c.so.2 => /usr/lib/x86_64-linux-gnu/libf2c.so.2 (0x00007f28efb7a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f28efa2b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f28ef839000)
/lib64/ld-linux-x86-64.so.2 (0x00007f28efdb3000)
для Superatlas:
linux-vdso.so.1 (0x00007ffc0b1e9000)
libf2c.so.2 => /usr/lib/x86_64-linux-gnu/libf2c.so.2 (0x00007feff818f000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007feff8040000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007feff7e4e000)
/lib64/ld-linux-x86-64.so.2 (0x00007feff83c8000)
файловая команда для Resonalyzer:
Resonalyzerv2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=e95bde4f8cc35d6884e7b7a996972c8670d88045, for GNU/Linux 3.2.0, not stripped
для Superatlas:
Superatlasv2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0ff6fce0ffe2c4da50e2a34a765ad6d916ef823d, not stripped
Я попытался запустить ./ Resonalyzerv2
из предоставленного автором zip-архива здесь в моей системе 18.04 и могу подтвердить, что он немедленно завершает работу со статусом 0.
Основываясь на вашем выводе ldd
, мы можем предположить, что программа была скомпилирована с использованием fort77
, который использует f2c
под капотом. для преобразования устаревшего кода Fortran в C.
В пакете Ubuntu fort77
обнаружена ошибка , которая соответствует описанным вами симптомам. Запуск версии, перекомпилированной с использованием fort77, с отладкой ( f77 -g
) показывает, что она завершается с
[Inferior 1 (process 27235) exited normally]
даже до попытки написать баннер программы. Мой strace
-fu слабый, но strace ./Resonalyzerv2
не кажется более информативным.
Я не знаю, был ли достигнут какой-либо прогресс в устранении ошибки, и влияет ли она на более поздние версии Ubuntu, но поскольку zip-архив включает исходный код двух программ на Фортране, вы можете попробовать скомпилировать их самостоятельно, используя gfortran
вместо fort77
.
Сначала установите пакет gfortran
, если вы еще этого не сделали.Затем либо:
скомпилировать с использованием gfortran
напрямую, возможно, используя устаревший
стандарт кода
gfortran -std = legacy -o Resonalyzerv2 ../ source / Resonalyzerv2.f {{ 1}}
или
скомпилируйте с использованием предоставленной gfortran версии f77
f77 -o Resonalyzerv2 ../source/Resonalyzerv2.f
Если вы установили ifort
, а также gfortran
, тогда вам нужно будет использовать update-alternatives
, чтобы подтвердить, какой пакет предоставляет f77
, и при необходимости отрегулировать.