исполняемый файл «работает», но не работает

Я пытаюсь запустить исполняемый файл в течение некоторого времени, но не могу заставить его работать. Я уже дал разрешения 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
0
задан 13 April 2021 в 06:34

1 ответ

Я попытался запустить ./ 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 , если вы еще этого не сделали.Затем либо:

  1. скомпилировать с использованием gfortran напрямую, возможно, используя устаревший стандарт кода

      gfortran -std = legacy -o Resonalyzerv2 ../ source / Resonalyzerv2.f {{ 1}} 

или

  1. скомпилируйте с использованием предоставленной gfortran версии f77

      f77 -o Resonalyzerv2 ../source/Resonalyzerv2.f
    

Если вы установили ifort , а также gfortran , тогда вам нужно будет использовать update-alternatives , чтобы подтвердить, какой пакет предоставляет f77 , и при необходимости отрегулировать.

0
ответ дан 23 April 2021 в 23:23

Другие вопросы по тегам:

Похожие вопросы: