Ошибка импорта: неправильный класс ELF: ELFCLASS32

#python #shared-libraries #elf

#python #разделяемые библиотеки #elf

Вопрос:

Я уже рассмотрел все предложенные связанные вопросы, но ни один из них, похоже, не дает ответа на мою проблему.

Я пытаюсь запустить собственную устаревшую программу на своем 64-разрядном компьютере. Программа, которую я пытаюсь запустить, является acmegui-64bit.so (существует также acmegui.so ), поэтому это наводит на мысль, что он был разработан для запуска на 64-разрядных машинах. Когда я запускаю его, я получаю

 [tharpa@hpz44 bin]$ ./acmegui-64bit
:/dept/python32/lib:/usr/local/viz/notification/lib:/usr/lib
Traceback (most recent call last):
  File "/dept/adapt/acme/py/acmegui.py", line 8, in <module>
    import ACME, AcmeGui
  File "/dept/adapt/acme/py/AcmeGui.py", line 10, in <module>
    import AppShell, ACME, AcmeDialog, nwrSetup, nwwsSetup, nwrMaker, cwwsMaker, 
  File "/dept/adapt/acme/py/nwrMaker.py", line 18, in <module>
    import Config, Format, ACME, AcmeDialog, BusyTkDialog, nwrText, wxRoundup
  File "/dept/adapt/acme/py/nwrText.py", line 16, in <module>
    import ACME, Decoder, Config, Format, IdsDB, Product, Setup
  File "/dept/adapt/acme/py/Decoder.py", line 12, in <module>
    import ACME, Pils, Metar, SCD, SCP, WMOHeader
  File "/dept/adapt/acme/py/Metar.py", line 6, in <module>
    import ACME, acmedcd
ImportError: /dept/adapt/acme/py/Linux/acmedcdmodule.so: wrong ELF class: ELFCLASS32
[tharpa@hpz44 bin]$ ./acmegui-64bit
  

Я рассмотрел возможность преобразования acmedcdmodule.итак, до 64-разрядной версии. Возможно ли это? Если нет, насколько сложно было бы его воссоздать?

Ответ №1:

Я рассмотрел возможность преобразования acmedcdmodule.итак, до 64-разрядной версии. Возможно ли это?

Нет.

Если нет, то насколько сложно было бы воссоздать его?

Вам нужно будет найти исходные тексты для него и перестроить его. Если исходная программа доступна с открытым исходным кодом, это может быть не слишком сложно. Если это закрытый исходный код, вам придется связаться с оригинальными разработчиками.

Прежде чем вы зайдете слишком далеко в этом, вы должны проверить, есть ли у вас уже 64-разрядная версия acmedcdmodule.so (возможно, с именем acmedcdmodule-64bit.so ). Если вы это сделаете, исправить это может быть так же просто, как создать несколько символических ссылок.