Компиляция для Chromebook с помощью Crouton

Сейчас у меня хромбук Asus c300. Поскольку у него нет устаревшей загрузки, я использую crouton, чтобы получить более стандартную среду командной строки. Мне удалось очень легко установить gcc в среде chroot. Он очень хорошо работает под chroot.

Поскольку базовое оборудование такое же, я подумал, что полученный исполняемый файл должен работать на Chromebook, без моего присутствия в среде chroot. Если это правда, я думал, что могу войти в среду chroot, скомпилировать любую программу, которую я хочу/нужно, и выйти обратно в обычную среду и использовать ее.

Я попробовал это с помощью простой программы hello world. Когда я попытался запустить исполняемый файл, я получил следующую ошибку:

bash: ./a.out: Permission denied.

Я попытался запустить его с помощью sudo и получил аналогичную ошибку:

sudo: unable to execute ./a.out: Permission denied.

Я даже использовал su для входа в систему как root, и я все еще не мог запустить программу (получил первую ошибку).

Я думал, что su/sudo преодолеет любое ограничение разрешений. Но, по-видимому, это не относится к хромбуку.

Что мне не хватает? Возможно ли то, что я хочу сделать?

РЕДАКТИРОВАТЬ: разрешение файла уже установлено на 777.


person yth    schedule 30.07.2015    source источник


Ответы (2)


Возможно, вам просто придется изменить права доступа к файлу или проверить права собственности на файлы. umask определяет, будет ли созданный файл по умолчанию иметь права на выполнение. Что показывает -ls -lat в файле?

Также попробуйте запустить

chmod +x ./a.out
person ojblass    schedule 30.07.2015
comment
Как насчет ldd в бинарном файле, может быть, некоторые из загружаемых библиотек имеют разные разрешения? - person ojblass; 31.07.2015
comment
Вывод из ldd под chroot: linux-vdso.so.1 =› (0x00007ffea0895000) libc.so.6 =› /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8553d5c000) /lib64/ld-linux-x86 -64.so.2 (0x00007f855413a000). У меня нет ldd в обычной оболочке. Однако мне не удалось найти /lib/x86_64-linux-gnu/libc.so.6 в обычной среде. - person yth; 05.08.2015

Вы можете найти более подробную информацию об ошибке с помощью команды strace
use:
strace ./a.out и проверить вывод.
Я полагаю, что у вас есть разные env (path and LD_library_path) под chroot.

person Laser    schedule 31.07.2015
comment
У меня нет strace в обычной среде, поэтому я не могу сравнить результаты. - person yth; 05.08.2015