У меня двойная загрузка Windows/Ubuntu. У меня есть исполняемый файл, созданный из файла c++ в папке на томе Windows (который доступен в Ubuntu), и я хотел бы запустить его в Ubuntu. Прямым ответом было бы переместить исполняемый файл на том Ubuntu и запустить его, но это часть огромного проекта, и у меня нет места в Ubuntu для перемещения всего проекта.

Так можно ли запустить исполняемый файл из моего терминала в Ubuntu?

Когда я пытаюсь запустить его из терминала с помощью команды ./learn, я получаю сообщение об ошибке ./learn: Permission Denied.

Я даже пытался с sudo, но это не работает.

3 ответа3

4

Был ли ваш файл скомпилирован для Windows? Отлично? В этом случае копирование файла вам не поможет, поскольку он использует системные вызовы Windows, а не Linux. Тот факт, что ваш файл отсутствует в разделе Ubuntu, не имеет значения, даже если вы скопируете файл для вашего раздела Ubuntu, он не будет работать.

Вы можете попробовать следующее:

  • Используйте уровень виртуализации, такой как Wine. Наверное, самый простой для вас. Это переведет системные вызовы Windows вашего программного обеспечения в соответствие с вызовами Linux. Вино должно быть доступно через репозиторий Canonical, но я не уверен.

  • Перекомпилируйте вашу программу для Linux. Если у вас недостаточно места для перемещения вашего проекта из одного раздела в другой, вам, вероятно, не хватает места для компиляции. Кроме того, если ваше программное обеспечение во многом зависит от библиотек только для Windows, вам придется заменить их, что может занять некоторое время. Портирование программного обеспечения может быть сложным.

  • Установите виртуальную машину Windows. Это примерно то же самое, что загрузка в ваш раздел Windows, так что, думаю, вам не интересен этот вариант. Популярные методы виртуализации включают VirtualBox и VMWare. Я лично использую VirtualBox.

Подробнее об этом:

0

Ошибка «Отказано в доступе» происходит из-за владения, и разрешения для файлов, которые могут быть решены с помощью команд chown и chmod, дают право владения и права доступа. но я не думаю, что это сработает, потому что двоичные файлы для Windows по компилятору в Windows и по компилятору в Linux отличаются, поэтому я предлагаю снова компилировать в Linux.

0

Предполагая, что вы компилируете в Ubuntu и хотите использовать раздел Windows в качестве цели исполняемого файла (который не является win32 exe!). В этом случае самое простое решение - смонтировать раздел Windows с umask=000,dmask=000,fmask=000 . Это установит разрешение 777 для всего. Но если вы хотите знать о безопасности, вы не должны этого допускать. В зависимости от настроек пользователя / группы вы можете установить, например: 022

Разрешения для файловых систем ntfs и vfat должны быть установлены с помощью параметров dmask , fmask и umask . dmask контролирует разрешения для каталогов, fmask контролирует разрешения для файлов и umask контролирует оба. Поскольку эти параметры устанавливают маски, они должны быть дополнением к нужным вам разрешениям. Например, rwx для владельца и rw для других - 022, а не 755.

Вы можете указать эти параметры непосредственно для команды mount :

sudo mount /dev/your_win_partition /media/drive_c -o remount,umask=000,dmask=000,fmask=000

Если вы хотите сделать его постоянным, добавьте эти параметры в /etc/fstab . Больше информации здесь .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .