2012-02-15 4 views
6

Я составил программу из моего Ububtu 10.10 терминала командойВыполнение программы C в Linux Terminal

gcc file_name.c -o new_file

. Он скомпилировал успешное создание исполняемого файла с именем new_file. Но когда я пытался выполнить его с помощью этой команды

./new_file 

В нем говорится, что разрешение отказано в new_file. Я проверил свойства разрешения этого файла, которые обнаружили, что у меня есть разрешение на чтение & (я единственный пользователь этой системы). Не могли бы вы помочь мне разобраться с проблемой?

+1

Вам также требуется разрешение на его выполнение. Сделайте: 'chmod + x newfile' в том же каталоге. – ArjunShankar

+2

'gcc' должен делать исполняемые файлы, err, executable. Какова ваша umask? –

+0

Почему бы вам не увеличить свою скорость accepet? Начните принимать правильные собеседники или сообщество, которые больше не помогут вам. – DonCallisto

ответ

11

Вы должны предоставить ему exe. разрешения.

Итак: chmod +x new_file

При создании нового файла с вашего НКУ, по умолчанию, это не исполняемый файл. Таким образом, вы должны предоставить ему разрешения на выполнение.

С chmod(see this) вы меняете разрешения на файл.

В этом конкретном случае вы предоставили разрешения на выполнение (+ [плюс] означает, что «x» означает выполнение) в этот файл.

Если вы хотите, чтобы отменить это разрешение, вы можете ввести: chmod -x filename

+0

Спасибо. Но, пожалуйста, объясните немного больше об этой команде? –

+1

Разрешения в Linux (и, вероятно, большинство Unix-подобных систем) представлены тремя битами: R, W и X. Если у файла установлен бит разрешения «R», он читается. Если бит «W» установлен, он записывается. Если бит «X» установлен, он является исполняемым. В отличие от Windows, где возможность выполнить файл вычисляется в соответствии с расширением файла, в Linux вы можете сделать каждый исполняемый файл простым, указав флаг «X». Доступны три набора бит бит: один для владельца файла, второй для группы, которая владеет файлом, и третья для всех остальных. –

+1

«Когда вы создаете новый файл с gcc, по умолчанию это не выполнимо». ?? Нет, обычно gcc создает исполняемые файлы с установленным битом x. У Рафи должна быть какая-то странная установка, которая препятствует этому. –

-1

После компиляции файл помещается в a.out Try использовать a.out.

+5

нет, когда используется -o new_file – hroptatyr

Смежные вопросы