我已经在usb上安装了Linux mint,因为我的硬盘速度非常慢。现在我想编译并运行C代码。我成功编译了它,但是因为linux是在usb中我要将程序存储在我的一个硬盘NTFS / FAT分区中,所以我得到bash权限被拒绝错误我应该怎么做才能运行代码?我无法将程序存储在usb(Linux分区)
中答案 0 :(得分:3)
可能您的问题是NFS / VFAT系统是使用noexec
标志或showexec
标志安装的。它指示内核不要从这些分区运行任何可执行文件(安全措施)。
如果是showexec
,则只需使用.exe
,.com
或.bat
扩展名命名您的可执行文件(是的,即使它是Linux可执行文件,vfat驱动程序使用扩展名来推断可执行权限位。)
如果是noexec
,请继续阅读......
在较旧的内核上,你可以使用/ld-*.so
技巧绕过这个,但是man mount
注释:
noexec :[...](直到最近,无论如何都可以使用像/lib/ld*.so / mnt / binary这样的命令来运行二进制文件。这个技巧自Linux 2.4以来就失败了。 25 / 2.6.0。)
如果我的猜测是正确的,您有几种选择:
一个。使用此命令以root身份从分区中删除标志:
mount -o remount,exec <mount-point>
B中。找出你的分区有这个标志的原因,哪个程序执行它(gnome-disks
或其他)并更改它。
℃。将程序编译到另一个分区(如果不在USB分区中),然后在tmpfs
中编译:
mkdir exe
sudo mount -t tmpfs exe exe
然后,在编译程序时:
gcc test.c -o exe/test
但要注意! tmpfs
是易失性的,当您卸下或关闭机器时它会消失。您可以在文件中创建永久分区:
truncate -s 512M exe.img
mkfs.ext4 exe.img
mkdir exe
然后,每次启动机器时安装映像:
sudo mount -o loop exe.img exe
答案 1 :(得分:2)
将文件复制到/tmp
,设置执行权限,你应该好好去,直到你重新启动然后你将不得不重复它。
cp /path/to/wherever/myprogram /tmp/myprogram
chmod +x /tmp/myprogram
/tmp/myprogram