2010-10-16 36 views
53

tôi chỉ đơn giản muốn chạy một file thực thi từ dòng lệnh, ./arm-mingw32ce-g++, nhưng sau đó tôi nhận được thông báo lỗi,"Không có tập tin hoặc thư mục" nhưng nó tồn tại

bash: ./arm-mingw32ce-g++: No such file or directory

Tôi đang chạy Ubuntu Linux 10.10. ls -l danh sách

-rwxr-xr-x 1 root root 433308 2010-10-16 21:32 arm-mingw32ce-g++

Sử dụng sudo (sudo ./arm-mingw32ce-g++) mang đến cho

sudo: unable to execute ./arm-mingw32ce-g++: No such file or directory

Tôi không có ý tưởng tại sao hệ điều hành thậm chí không thể nhìn thấy các tập tin khi nó ở đó. Có suy nghĩ gì không?

Trả lời

53

Lỗi này có thể có nghĩa là ./arm-mingw32ce-g++ không tồn tại (nhưng nó), hoặc nó tồn tại và là một tệp thực thi được liên kết động được hạt nhân nhận ra nhưng trình tải động không có sẵn. Bạn có thể xem trình tải động nào được yêu cầu bằng cách chạy ldd /arm-mingw32ce-g++; bất kỳ thứ gì được đánh dấu là not found là trình tải động hoặc thư viện mà bạn cần cài đặt.

Nếu bạn đang cố gắng để chạy một nhị phân 32-bit trên một cài đặt amd64:

  • Lên đến Ubuntu 11.04, cài đặt gói ia32-libs.
  • Trên Ubuntu 11.10, cài đặt ia32-libs-multiarch.
  • Bắt đầu với 12.04, cài đặt ia32-libs-multiarch hoặc chọn một bộ hợp lý gồm :i386 gói ngoài gói :amd64.
+8

Awesome, hiệu quả! Bằng cách này, đầu ra của ldd là 'không phải là một thực thi động' (trước khi tôi cài đặt ia32-libs). – Warpspace

+3

One upvote, cho tip về 32bit loader trên 64bit cài đặt! – Dinaiz

+0

Điều này khiến tôi phát điên. Hoạt động hoàn hảo. – LeviX

3

Tôi gặp lỗi tương tự đối với tập lệnh bash đơn giản không có vấn đề 32/64-bit. Điều này có thể do tập lệnh bạn đang cố gắng chạy có lỗi trong đó. Điều này ubuntu forum post chỉ ra rằng với các tập lệnh kịch bản thông thường bạn có thể thêm 'sh' ở phía trước và bạn có thể nhận được một số đầu ra gỡ lỗi từ nó. ví dụ.

$ sudo sh arm-mingw32ce-g++ 

và xem bạn có nhận được kết quả nào không.

Trong trường hợp của tôi, sự cố thực tế là tệp mà tôi đang cố gắng thực thi có định dạng Windows thay vì linux.

11

Lỗi này cũng có thể xảy ra nếu cố gắng chạy tập lệnh và shebang bị viết sai chính tả. Hãy chắc chắn rằng nó đọc #!/bin/sh, #!/bin/bash hoặc bất kỳ trình thông dịch nào bạn đang sử dụng.

+2

Tôi đang đề cập đến tệp thực thi, không phải là tập lệnh.Sau đó, một lần nữa, một người nào khác có thể tìm thấy nhận xét này hữu ích – Warpspace

+0

Đúng, nhưng tôi đã đặt câu hỏi này cho vấn đề chính xác này, như bạn đã nói, có thể ai đó cũng sẽ làm như vậy. –

+0

Trong trường hợp của tôi, tôi đã cố gắng chạy './My/full/path/myscript' thay vì'./Myscript'. – Noumenon

1

Tôi đã gặp sự cố tương tự với tệp mà tôi đã tạo trên mac của mình. Nếu tôi cố gắng chạy nó trong một shell với ./filename tôi nhận được thông báo lỗi không tìm thấy tập tin. Tôi nghĩ rằng đã xảy ra sự cố với tệp.

những gì tôi đã làm:

mở một phiên ssh vào máy chủ
mèo filename
sao chép sản lượng vào clipboard
rm filename
lạc filename
vi filename
i cho chèn chế độ
dán nội dung từ clipboard
ESC để kết thúc chế độ chèn
: wq!

Điều này phù hợp với tôi.

+0

Nguyên thủy nhưng hoạt động ..;) – Rotem

5

Tôi có cùng thông báo lỗi khi cố gắng chạy tập lệnh Python - đây không phải là trường hợp sử dụng dự định của @ Warpspace (xem các nhận xét khác), nhưng đây là một trong số các truy cập hàng đầu trong tìm kiếm của tôi. hữu ích.

Trong trường hợp của tôi, đó là dòng kết thúc dòng DOS (\r\n thay vì \n) rằng dòng shebang (#!/usr/bin/env python) sẽ chuyển sang. Một đơn giản dos2unix myfile.py sửa nó.

10

Tôi gặp phải lỗi này khi tôi đang cố gắng xây dựng nguồn Selenium trên Ubuntu. Kịch bản shell đơn giản với đúng shebang không thể chạy ngay cả sau khi tôi đã có tất cả các điều kiện tiên quyết được bảo hiểm.

file file-name # helped me in understanding that CRLF ending were present in the file. 

Tôi đã mở tệp trong Vim và tôi có thể thấy rằng chỉ vì tôi đã từng chỉnh sửa tệp này trên máy Windows, ở định dạng DOS. Tôi đã chuyển đổi tệp sang định dạng Unix bằng lệnh dưới đây:

dos2unix filename # actually helped me and things were fine. 

Tôi hy vọng rằng chúng ta nên cẩn thận khi chúng tôi chỉnh sửa tệp trên nhiều nền tảng, chúng tôi cũng nên lưu ý định dạng tệp.

+0

yup. 'dos2unix filename' đã lưu ngày của tôi. – richie

+0

nó hoạt động cho tôi, cảm ơn. – meadlai

0

Tôi gặp lỗi này “No such file or directory” nhưng nó tồn tại vì tệp của tôi được tạo trong Windows và tôi đã cố gắng chạy tệp trên Ubuntu và tệp chứa 15 \ r không hợp lệ khi có dòng mới. tôi vừa tạo ra một tập tin mới cắt bỏ những thứ không mong muốn

sleep: invalid time interval ‘15\r’ 
Try 'sleep --help' for more information. 
script.sh: 5: script.sh: /opt/ag/cont: not found 
script.sh: 6: script.sh: /opt/ag/cont: not found 
[email protected]:/home/abc12/Desktop# vi script.sh 
[email protected]:/home/abc12/Desktop# od -c script.sh 
0000000 # ! / u s r / b i n / e n v  b 
0000020 a s h \r \n w g e t  h t t p : /

0000400 : 4 1 2 0 /\r \n 
0000410 
[email protected]:/home/abc12/Desktop# tr -d \\015 <script.sh> script.sh.fixed 
[email protected]:/home/abc12/Desktop# od -c script.sh.fixed 
0000000 # ! / u s r / b i n / e n v  b 
0000020 a s h \n w g e t  h t t p : //

0000400 /\n 
0000402 
[email protected]:/home/abc12/Desktop# sh -x script.sh.fixed 
0

Tôi chỉ có vấn đề này trong mingw32 bash. Tôi đã thực hiện nút/npm từ Program Files (x86)\nodejs và sau đó chuyển chúng vào thư mục disabled (về cơ bản là xóa chúng khỏi đường dẫn). Tôi cũng có Program Files\nodejs (ví dụ: phiên bản 64bit) trong đường dẫn, nhưng chỉ sau phiên bản x86. Sau khi khởi động lại shell bash, bạn có thể tìm thấy phiên bản 64bit của npm. node hoạt động chính xác mọi lúc (được kiểm tra với node -v thay đổi khi phiên bản x86 được di chuyển).

Tôi nghĩ hash -r sẽ đã làm việc thay vì khởi động lại bash: https://unix.stackexchange.com/a/5610

Các vấn đề liên quan