Я пытаюсь запустить язык Google Dart, но при запуске dart2js возникают ошибки. Я запускаю Arch linux и установил dart-sdk из AUR. Некоторые соответствующие выходные данные терминала находятся ниже.
% 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
Может быть, я использую 64-битную ОС, а двоичный файл dart 32-битный?
Для выполнения двоичного файла ELF Linux необходимо запустить программу, которая декодирует ELF, загружает динамические библиотеки и т. Д. Эта программа называется программный интерпретатор. Имя и полный путь к интерпретатору программы прописаны в самом ELF
Например
$ 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]
...
Если программный интерпретатор, запрошенный ELF, не найден, BASH получает ошибку «файл не найден» и сообщает «Нет такого файла или каталога».
Как сказал @poige выше, вам необходимо установить базовую поддержку для запуска 32-битных приложений.
Да, Arch x86_64 по умолчанию не поддерживает 32-разрядные приложения. Посмотри это:
«… Могу ли я запускать 32-битные приложения внутри Arch64? […] Вы можете установить библиотеки lib32- * из репозитория MultiBib… »