4

Я установил программу на Linux (UBUNTU), я установил переменные среды. К сожалению, когда я набираю команду для запуска программы, она выдает мне сообщение: нет такого файла или каталога.

Я могу видеть файл, его разрешение установлено как исполняемый. Не понимаю почему?

Я установил эту программу на Mac и Windows раньше, и этого никогда не было! :( Вот ссылка на программное обеспечение http://www2.parc.com/isl/groups/nltt/xle/doc/xle.html#sec1.5

Вот больше информации: это XLE!

**~/XLE/bin$ ls**
approx-rand-sigtest              lexbase               unpack
client-server-support.tcl        mt-sigtest            unpack-counts
cometc                           node_label_rules.pl   variables.tcl
commands.tcl                     pdb                   xfr_benchmark.tcl
default-gen-tokenizer.fst        print-feature-forest  xfr_exe
default-morph-config             select-best-parse     xfr-extract-feature-list
default-parse-tokenizer.fsmfile  semantics.tcl         xfr_main
dummy_translate_rules.pl         sp-3.12.0             xfr-print-feature-forest
extract                          sp-3.12.2             xfr-select-n-best
foreign_language_interface       transfer              xle
fs_triples.pl                    transfer.sav          xledate.tcl
fstructures.tcl                  transfer.tcl          xle-inspector.tcl
gen.tcl                          translate.tcl         xle.tcl
getProperSubsets                 trees.tcl             xle-unix.tcl
gtags                            triples               xle-win.tcl
identify-sparse-features         triples_match

:~/Desktop$ xle
bash: /home/yasaman/Desktop/XLE/bin/xle: No such file or directory

Как видите, переменная окружения правильно установлена, поскольку она знает, где искать команду xle, но ..

yasaman@yasaman-desktop:~$ $PATH
bash: /home/yasaman/Desktop/XLE/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games: No such file or directory

yasaman@yasaman-desktop:~/Desktop/XLE/bin$  file ./xle ; ldd ./xle 
./xle: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
    not a dynamic executable

yasaman@yasaman-desktop:~/Desktop/XLE/bin$ ls -la | grep xle
-rwxrwxr-x 1 yasaman yasaman 5050490 2010-11-05 08:27 xle
-rw-rw-r-- 1 yasaman yasaman 32 2010-11-05 08:27 xledate.tcl

Извлеките команду readelf -l xle

Elf file type is EXEC (Executable file)
Entry point 0x8059ccc
There are 7 program headers, starting at offset 52

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x08048034 0x08048034 0x000e0 0x000e0 R E 0x4
  INTERP         0x000114 0x08048114 0x08048114 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.2]
  LOAD           0x000000 0x08048000 0x08048000 0x42fd85 0x42fd85 R E 0x1000
  LOAD           0x430000 0x08478000 0x08478000 0x18598 0x61534 RW  0x1000
  DYNAMIC        0x44751c 0x0848f51c 0x0848f51c 0x00128 0x00128 RW  0x4
  NOTE           0x000128 0x08048128 0x08048128 0x00020 0x00020 R   0x4
  GNU_EH_FRAME   0x423980 0x0846b980 0x0846b980 0x0168c 0x0168c R   0x4

 Section to Segment mapping:
  Segment Sections...
   00     
   01     .interp 
   02     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .eh_frame_hdr .eh_frame .gcc_except_table 
   03     .data .dynamic .ctors .dtors .jcr .got .bss 
   04     .dynamic 
   05     .note.ABI-tag 
   06     .eh_frame_hdr

1 ответ1

7

:~/Desktop$ xle
bash: /home/yasaman/Desktop/XLE/bin/xle: No such file or directory

Это ясно показывает, что файл находится в вашей PATH и имеет права на выполнение.

Наиболее частой причиной ошибки ENOENT в этих условиях является отсутствующий или поврежденный динамический загрузчик. not a dynamic executable ошибка исполняемого файла от ldd является еще одним признаком того, что это происходит.

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

Что говорит readelf -l xle ? Существует ли путь, указанный в сегменте INTERP ? Это исполняемый файл?

Так как файл является 32-битный исполняемый ELF вы , возможно , на 64-битной системе только? Если это так, вам нужно установить libc6-i386 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .