2012-02-15 72 views
6

tôi đã biên soạn một chương trình từ 10.10 terminal Ububtu của tôi bằng cáchThực thi chương trình C trong Linux ga

gcc file_name.c -o new_file

lệnh. Nó biên dịch thành công việc tạo một tệp thi hành có tên new_file. Nhưng khi tôi đang cố gắng thực hiện nó bằng lệnh này

./new_file 

Điều đó nói rằng quyền đó bị từ chối new_file. Tôi đã kiểm tra các thuộc tính quyền của tệp đó thấy rằng tôi đã được phép đọc & ghi nó (Tôi là người dùng duy nhất của hệ thống đó). Bạn có thể giúp tôi tìm ra vấn đề không?

+1

Bạn cũng cần quyền để thực thi nó. Do: 'chmod + x newfile' trong cùng một thư mục. – ArjunShankar

+2

'gcc' nên thực thi, err, thực thi. Umask của bạn là gì? –

+0

Tại sao bạn không tăng tỷ lệ accepet của bạn? Bắt đầu chấp nhận những người anwsers hoặc cộng đồng quyền sẽ không giúp bạn nhiều hơn nữa. – DonCallisto

Trả lời

11

Bạn phải cung cấp cho nó exe. quyền.

Vì vậy: chmod +x new_file

Khi bạn tạo một file mới với gcc của bạn, theo mặc định, đây không phải là thực thi. Vì vậy, bạn phải cho phép nó thực thi.

Với chmod(see this) bạn thay đổi quyền trên tệp.

Trong trường hợp cụ thể đó, bạn đã cấp quyền thực thi (+ [cộng] có nghĩa là đã cho, 'x' nghĩa là thực hiện) vào tệp đó.

Nếu bạn muốn thu hồi giấy phép đó, bạn có thể gõ: chmod -x filename

+0

Cảm ơn bạn. Nhưng xin vui lòng giải thích thêm một chút về lệnh này? –

+1

Quyền trong Linux (và có lẽ hầu hết các hệ thống giống Unix) được đại diện bởi ba bit: R, W và X. Nếu một tệp có bộ bit cho phép 'R', thì nó có thể đọc được. Nếu bit 'W' được đặt, nó có thể ghi được. Nếu bit 'X' được đặt, nó có thể thực thi được. Không giống như Windows, nơi khả năng thực hiện một tệp được tìm ra theo phần mở rộng của tệp, trong Linux, bạn có thể làm cho mọi tệp thực thi chỉ bằng cách chỉ định cờ 'X'. Ba bộ bit quyền hạn có sẵn: một cho chủ sở hữu của tệp, thứ hai cho nhóm sở hữu tệp và tệp thứ ba cho mọi người khác. –

+1

"Khi bạn tạo tệp mới với gcc, theo mặc định, điều này không thể thực thi được." ?? Không, thông thường gcc tạo các tệp thi hành với bộ bit x. Rafi phải có một số thiết lập kỳ lạ mà ức chế điều này. –

-1

Sau khi biên dịch, các tập tin được đặt trong a.out Cố gắng sử dụng a.out.

+5

không khi -o new_file được sử dụng – hroptatyr

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