1 (01.11.2011 16:50:27 отредактировано kreygen)

Здравствуйсте.
Чувствую себя совсем дураком, но не выходит откомпилировать программу. Изначально она писалась под виндой и использует кроссплатформенные библиотеки, в общем-то, состоящие только из openGL и openGLUT. Работаю в eclipse. Скопировав на линукс, настроил всё, прописал пути, компилирую. Появляется фалик... и при запуске упорно пишет:

Не удалось показать «/fat32/life_story_workspace/life_story/linux2/life_story».
Для файлов типа «исполняемый» не установлено каких-либо приложений.
Найти подходящее приложение для открытия этого файла?

Писал свой makefile, то же самое. Думал, может библиотеки битые, но опенгл примеры разные из инета прекрасно компилируются. Половину дня убил, так и не смог понять, в чём проблема. ЗЫ: знания линукса довольно посредственные. ОС: openSuSe 11.4. Программа на си.

2

kreygen пишет:

Не удалось показать «/fat32/life_story_workspace/life_story/linux2/life_story».
Для файлов типа «исполняемый» не установлено каких-либо приложений.

Вы чего его "двойным кликом" что-ли запускаете?
Система вам и пишет что ничего ей не предписано при таком обращении с исполняемыми файлами делать.

В консоли попробуйте запустить собранный бинарник.

3

Тоже бесполезно:

hladov@linux-qldk:/fat32/life_story_workspace/life_story/linux> ./life_story
bash: ./life_story: Отказано в доступе

4

kreygen пишет:

bash: ./life_story: Отказано в доступе

Проверьте права на файл

5

Проверьте права на файл

И правда, владелец root. Но я же компилирую из под обычного пользователя, почему он права вдруг такие выставил?

6

Всё, разобрался. Надо было перенести все файлы в личную папку пользователя, тогда он присваивает бинарнику права пользователя. Спасибо большое.

7 (04.11.2011 17:47:37 отредактировано redux)

Вдогонку:
kreygen,
Чтобы файлы стали исполняемыми их совсем необязательно таскать по диску. Вот вам пример: от юзера запускаются всевозможные команды, файлы которых (скрипты, линки или бинарники) лежат у рута и юзеру вовсе не принадлежат.

Для разрешения исполнения:

chmod +x файл

Удач в программировании.

8

вдогонку догонки:
если файлы на fat разделе, который монтируестя без прав на исполнение или вообще на разделе. который монтируется с -o noexec, то с этого раздела действительно ничего не получится запустить. выход - или копировать, или перемонтировать его правильно.

95% процентов проблем находятся между клавиатурой и стулом.

9

Fat-Zer,
Вот хотел даже спасибо сказать ab
Но подмонтировал флешку с FAT -  создал там скрипт,- права выставляются на исполнение, скрипт выполняется.

Но ежели noexec тогда конечно, но это  не только на FAT тогда ab

10

redux пишет:

Но подмонтировал флешку с FAT -  создал там скрипт,- права выставляются на исполнение, скрипт выполняется.

скрипту вообще пофиг ему хватит и прав на чтение, ибо он не сам "исполняется", а его исполняет интерпретатор.
да и вообще как вы на фате "выставили права на исполнение"?

95% процентов проблем находятся между клавиатурой и стулом.

11 (06.11.2011 14:21:03 отредактировано redux)

Fat-Zer, Я тут поразмышлял, ваше замечание(про права на весь раздел) здравое, ибо если сборка шла во вменяемой стреде, то права на исполнение должны были быть у файла автоматически (по крайней мере, если что собираю компилятром- права ставятся сами). То есть если у ТС был отказ по правам запуска= то очень возможно, что именно весь раздел был подмонтирован с noexec- хотя не факт , а всего лишь предположение.

"скрипту вообще пофиг ему хватит и прав на чтение" - а вот с этим я категорически не согласен,- стопятьсот раз создвал себе, например для закачки список, а ля:

!#/bin/bash

<сюда команды>

И пока эхтому скрипту  права на исполнение не пропишешь- пермиссион дениед будет(это в Дебиане, может у вас по-другому).

Далее по правам на FAT, у меня при монтировании. Ничего от дефолта не менял. Вот флешка:

Disk /dev/sdc: 1025 MB, 1025507328 bytes
255 heads, 63 sectors/track, 124 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1         124      995998+   6  FAT16

Вот кусок вывода ls -l  с корня флешки:
/

media/FLASH# ls -l
итого 83760
drwxr-xr-x  9 shaman root    16384 Окт 26 23:31 131
-rwxr-xr-x  1 shaman root     4297 Окт  2  2010 306px-X-client-libraries.svg.png
-rwxr-xr-x  1 shaman root  3236048 Июн  1  2010 3.09M_tech_support.flv.flv
-rwxr-xr-x  1 shaman root 12399145 Май 23  2008 35Scorpions - Wind Of Change.MP3
-rwxr-xr-x  1 shaman root  4027720 Июн  1  2010 3.84M_.flv
-rwxr-xr-x  1 shaman root   185408 Июл  6 12:46 489272.pdf
-rwxr-xr-x  1 shaman root      160 Окт 27 00:58 aget

-последний aget - как раз скрипт. Повторюсь, дефолтные настройки не менял.
Если инетересны какие конфиги, выложу.

Ответный вопрос:
Создайте текстовый файл, впишите туда
!#/bin/bash
sleep 10

Проверьте права или выставьте права на него chmod -x
и в консоли запустите
Неужели у вас он выполнпится, мне просто интересно, ибо у меня не так.

12

я про то,  что fat плюёт на chmod:

 Консоль:
alexander@goblin-book /media/disk $ echo '#!/bin/bash' >> 1.sh
alexander@goblin-book /media/disk $ echo 'echo qwe' >> 1.sh
alexander@goblin-book /media/disk $ chmod  a-x ./1.sh -v
права доступа «./1.sh» изменены на 0644 (rw-r--r--)
alexander@goblin-book /media/disk $ ls  -l 1.sh
-rwxr-xr-x 1 alexander root 15 Ноя  6 14:48 1.sh
alexander@goblin-book /media/disk $ ./1.sh
qwe

а со скриптом всегда можно сделать вот так:
 Консоль:

alexander@goblin-book /media/disk $ mv ./1.sh /tmp
alexander@goblin-book /media/disk $ cd /tmp
alexander@goblin-book /tmp $ ./1.sh
qwe
alexander@goblin-book /tmp $ chmod  a-x ./1.sh -v
права доступа «./1.sh» изменены на 0644 (rw-r--r--)
alexander@goblin-book /tmp $ ./1.sh
bash: ./1.sh: Отказано в доступе
alexander@goblin-book /tmp $ "$(head -1 ./1.sh|cut -d\! -f2)" ./1.sh
qwe

по поводу монтирования: man mount - расскажет про fstab и man umask - про дефолтные значения.

95% процентов проблем находятся между клавиатурой и стулом.

13 (07.11.2011 02:26:21 отредактировано redux)

Монтирую флешку с FAT (других устройств с fat не имею).

 Консоль:
mount -t auto /dev/sdc1 /mnt/data
cd /mnt/data
ls -l aget
-rwxr-xr-x 1 shaman root 160 Окт 27 00:58 aget

- права на выполнение присутствуют- Отличие от вашего Генту.
(aget -это скрипт на баше).

Далее, на запись всё же можно убрать,- то есть "плюёт" не на весь chmod

 Консоль:
chmod -w aget
g12:/mnt/data# ls -l aget
-r-xr-xr-x 1 shaman root 160 Окт 27 00:58 aget

С другой стороны, командой chmod -x права на выполнение не убираются.



За umask - спасибо, почитаю.
UPD: С вашей подачи знания расширил. ab

Хотя причина в этом конкретном вопросе может быть(?) именно в использовании флешки, а не винта.(В моих примерах).