2010-06-04 54 views
8

Tôi đã cài đặt Cygwin trên hệ thống của mình. Nhưng khi tôi cố gắng sử dụng các lệnh gcc nó nói:chạy gcc trong cygwin

bash: gcc: command not found

bất cứ ai có thể cung cấp cho tôi những giải pháp, xin vui lòng?

Trả lời

2

Một vài điều:

  • tôi luôn luôn cài đặt toàn Cygwin gói. Các phiên bản trước đã gặp rắc rối với các phụ thuộc được sửa lại, tôi tin, nhưng nó vẫn là một thói quen tốt. Bạn không bao giờ biết khi nào bạn có thể cần bit bí mật nhất của Cygwin.

  • Bạn có thể phải thay đổi đường dẫn của mình. Tất cả các công cụ nói chung có thể được tìm thấy không sao nếu bạn đang chạy bên trong vỏ bash Cygwin nhưng đó không nhất thiết phải là trường hợp từ cmd.exe.

Đây không phải là thông tin cuối cùng vì thông báo lỗi của bạn xuất phát từ số bash, vì vậy tôi khá chắc chắn đó là cách bạn đang chạy nó.

Có một cái nhìn để đảm bảo bạn có /usr/bin/gcc từ bên trong bash và con đường của bạn bao gồm /usr/bin ở đâu đó:

pax> echo $PATH 
/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS 

pax> which gcc 
/usr/bin/gcc 

Nếu nó không có ở đó, quay trở lại và cài đặt lại tất cả mọi thứ (hoặc gói phát triển có liên quan nếu bạn không muốn mọi thứ). Nếu nó ở đó và đường dẫn của bạn không có vị trí của nó, hãy thay đổi đường dẫn của bạn, trong /etc/profile hoặc đường dẫn tương đương trong thư mục chính của bạn.

3

Điều này có thể do bạn thiếu tiền tố biên dịch .

Theo mặc định, hầu hết các tệp makefiles sẽ tìm kiếm gcc.exe. Nếu bạn đang sử dụng một trình biên dịch khác, giả sử i686-pc-mingw32-gcc.exe, thì make sẽ không tìm thấy nó trừ khi bạn nói. Bạn có thể làm một cái gì đó giống như

PREFIX=i686-pc-mingw32- 

make CC=${PREFIX}gcc 

Using Linux Binaries

16

Trong cài đặt của tôi không có generic gcc lệnh hoặc, vì vậy tôi đã liên kết tượng trưng cho nó:

cd /usr/bin 
ln -s i686-pc-cygwin-gcc-3.4.4.exe gcc 

Bây giờ kiểm tra xem nó hoạt động bằng cách làm which gcc sẽ cung cấp cho bạn /usr/bin/gcc và sau đó gcc sẽ cung cấp cho bạn gcc: no input files. Lưu ý rằng phiên bản i686-pc-cygwin-gcc-3.4.4.exe của bạn có thể khác. Đăng ký/usr/bin cho nó.

4

Có thể trong quá trình cài đặt Cygwin bạn chưa chọn gcc, gdb và tạo gói. Vì vậy, hãy thử làm theo các bước được đưa ra trong liên kết Resolving gcc command not found này. Có thể vấn đề của bạn đã được giải quyết.

Tôi đã gặp sự cố tương tự và sự cố đã được giải quyết bằng các bước được đề cập ở trên.

+1

Liên kết đã chết, Nếu bạn có thể thực hiện các bước liên quan nếu bạn vẫn có chúng. – Nathan

0

Một vấn đề liên quan khác không được đề cập ở đây, là từ dòng lệnh trình biên dịch cần biến môi trường biến được cập nhật để tìm vị trí của tệp tiêu đề C++. Trong các cửa sổ, bạn chỉ có thể cập nhật môi trường đường dẫn bằng cách sử dụng GUI 'thuộc tính hệ thống nâng cao' và thêm vị trí của tệp C++ bao gồm. Điều này sẽ cập nhật biến môi trường PATH trong Windows cmd & Cygwin tự động khi khởi động lại trình bao.

Để cập nhật PATH của bạn từ Linux hoặc loại vỏ Cygwin ... PATH = $ PATH:/your_path_here Ví dụ: PATH = $ PATH: /cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7 .3/include/C++ Cũng là một ý tưởng hay để chỉ thêm thư mục include: PATH = $ PATH: /cygdrive/c/cygwin/lib/gcc/i686-pc-mingw32/4.7.3/include/ ... hoặc kiểm tra các thư mục thích hợp cho vị trí cài đặt của bạn bao gồm các tập tin, tôi khuyên bạn nên cài đặt mingw để sử dụng với Cygwin, được envoked với g + +.

Để cài đặt các gói cần thiết bổ sung trong Cygwin chạy lại tiện ích cài đặt Cygwin & kiểm tra cài đặt từ Internet để thêm gói từ kho web và thêm mingw-gcc-g ++ & mingw-binutils. Để biên dịch mã của bạn: g ++ hello.cpp -o hello

Nếu sử dụng tiện ích gcc thay vì biên dịch với lệnh: gcc hello.cpp -o hello -lstdC++ ... để thực thi.

Miễn là bạn đã cài đặt gcc hoặc mingw và đường dẫn đến tệp C++ bao gồm trong môi trường đường dẫn của bạn, các lệnh sẽ hoạt động.

0

Có một khó khăn để phát hiện sai lầm cũng có thể gây ra lỗi này,

Nếu Makefile của bạn sử dụng PATH như biến, sai số gcc not found có thể xảy ra.
Điều này là do nó tạm thời thay đổi đường dẫn hệ thống.

Tôi mất rất nhiều thời gian kiểm tra cài đặt môi trường Cygwin để khám phá điều này, vì vậy tôi sẽ để nó ở đây trong trường hợp điều này giúp mọi người tìm đường đến đây.

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