Linux không thể tìm thấy tệp tồn tại


9

Tôi đang cố gắng để có được ngôn ngữ Dart của Google và chạy, nhưng nó bị lỗi khi chạy dart2js. Tôi đang chạy Arch linux và tôi đã cài đặt dart-sdk từ AUR. Một số đầu ra thiết bị đầu cuối có liên quan nằm bên dưới.

% dart2js main.dart   
/usr/local/bin/dart2js: line 7: /usr/local/bin/dart: No such file or directory

% cat /usr/local/bin/dart2js
#!/bin/sh
# Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

BIN_DIR=`dirname $0`
exec $BIN_DIR/dart --allow_string_plus=false $BIN_DIR/../lib/dart2js/lib/compiler/implementation/dart2js.dart "$@"

% file /usr/local/bin/dart                                                                                          
/usr/local/bin/dart: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.15,
BuildID[sha1]=0x27fe166ca015c1adfeaf3a6f9c018e7d7af46d9f, stripped

% ls -alh /usr/local/bin
total 4.9M
drwxr-xr-x  2 root root 4.0K Jun 10 22:51 .
drwxr-xr-x 12 root root 4.0K Jun 10 22:51 ..
-rwxr-xr-x  1 root root 422K May 10 22:41 cargo
-rwxr-xr-x  1 root root 2.7M Jun 10 22:50 dart
-rwxr-xr-x  1 root root  360 Jun  6 16:20 dart2js
-rwxr-xr-x  1 root root  176 Jun  6 16:20 pub
-rwxr-xr-x  1 root root 166K May 10 22:41 rustc
-rwxr-xr-x  1 root root 1.6M May 10 22:41 rustdoc

% uname -rm
3.3.7-1-ARCH x86_64

Có thể là do tôi đang chạy HĐH 64 bit và nhị phân phi tiêu là 32 bit?

Câu trả lời:


19

Để thực thi một linux nhị phân ELF cần khởi động một chương trình giải mã ELF, tải các thư viện động, v.v. Chương trình này được gọi là trình thông dịch chương trình . Tên và đường dẫn đầy đủ đến trình thông dịch chương trình được viết bằng chính ELF

Ví dụ

 $ file /usr/bin/cheese 
 /usr/bin/cheese: ELF 32-bit LSB executable, Intel 80386

 $ readelf -l /usr/bin/cheese  
 Elf file type is EXEC (Executable file)
 ...
 Program Headers:
 ...
 INTERP         0x000154 0x08048154 0x08048154 0x00013 0x00013 R   0x1
  [Requesting program interpreter: /lib/ld-linux.so.2]
 ...

Nếu không tìm thấy trình thông dịch chương trình do ELF yêu cầu, BASH sẽ nhận được lỗi không tìm thấy tệp và báo cáo "Không có tệp hoặc thư mục như vậy".

Như @poige đã nói ở trên, bạn cần cài đặt hỗ trợ cơ bản để chạy các ứng dụng 32 bit.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.