Файл .exe, созданный C, программирующим через gcc компилятор, не выполняется

Я использую Ubuntu 12.04 на своем рабочем столе и Ubuntu 11.04 на ноутбуке. Я пишу c программу, которая содержит математику. Я создаю исполняемый файл посредством команды:

gcc -o filename.exe filename.c -lm (compilation)

Это создаст файл filename.exe. Я могу теперь выполнить его посредством терминальной команды:

./filename.exe (execution)

У меня есть ноутбук. Это имеет Ubuntu 11.04. Я храню файлы в разделе NTFS. Они последовательность команд работают хорошо в моем ноутбуке. Но если тот же файл, который я копирую в разделе NTFS своего рабочего стола, который является Ubuntu 12.04 и затем выполняет затем ее, не работает. Это компилирует, но не делает выполняется. Я получаю ответ:

bash: ./filename.exe: Permission denied

Я искал в Интернете. Они предположили, что можно изменить разрешение файла ниже команды:

chmod u+x filename.exe

Но я получил тот же ответ: Permission denied. Я попробовал вручную через GUI через свойство-> разрешение->, проверка "позволяет выполнять файл как программу", и это не работает. Это сняло флажок автоматически. Я искал в Интернете, и я получил ответ, что не желательно изменить разрешение для каждого файла каждый раз выполнения. лучше можно изменить разрешение всего раздела NTFS следующей командой:

chmod -R 777 /media/partition (where partition is NTFS type.)

Это, как предполагается, изменяет разрешение раздела на rw и исполняемый режим. Но это также не решает мою проблему.

2
задан 24 August 2012 в 10:27

4 ответа

Я решил проблему. Я следовал за следующим веб-сайтом.

я выполнил следующие команды:

sudo blkid -c /dev/null (It will list all the partitions we have. In my computer, it displays,)
sudo umount /media/partitionname
sudo mkdir /media/partitionname
sudo mount /dev/sdaX -t ntfs-3g -o uid=1000,gid=1000,umask=002 /media/partitionname

то, где partitionname является названием Вашего раздела NTFS и в sdaX, X, является числом, полученным из первой команды т.е. sudo blkid -c /dev/null.

Теперь я могу записать программу C, может выполниться в том же разделе (в NTFS). Без этих команд цвет файла был белым, когда команда ls -al используется. Но теперь цвет изменился на зеленый после списка его до ls -al команда.

2
ответ дан 21 October 2019 в 12:39

Как другой уже упомянутый, проблема вызывается при помощи NTFS, который не поддерживает полномочия стиля Unix.

обходное решение А должно было бы смонтировать раздел, таким образом, ВСЕ файлы на нем имеют execute набор битов. Это могло бы решить Вашу непосредственную проблему, но может повредиться снова при компиляции более сложных программ. Это может также быть угроза безопасности.

А надлежащие решения не состояли бы в том, чтобы использовать раздел NTFS для компиляции программ :)

1
ответ дан 21 October 2019 в 12:39

Там вероятны некоторые настройки в том, как Вы монтируете раздел NTFS, который отклоняет Вас право выполнить файлы на нем. Необходимо смочь зафиксировать это путем редактирования опций в/etc/fstab. Посмотрите этот поток: http://ubuntuforums.org/showthread.php?t=1378519 .

0
ответ дан 21 October 2019 в 12:39

Проблема состоит в том, что Вы используете ntfs, который не имеет выполнить разрешения. Одна вещь, которую Вы могли бы сделать, состоит в том, чтобы добавить 'должностное лицо' к конец параметров в записи для этого диска в Вашем/etc/fstab файле

http://ubuntuforums.org/showthread.php?t=1570369 https://bbs.archlinux.org/viewtopic.php? id=126406

0
ответ дан 21 October 2019 в 12:39

Другие вопросы по тегам:

Похожие вопросы: