如果在usb上安装linux,如何在Linux中运行c代码

时间:2014-06-18 18:31:38

标签: c linux

我已经在usb上安装了Linux mint,因为我的硬盘速度非常慢。现在我想编译并运行C代码。我成功编译了它,但是因为linux是在usb中我要将程序存储在我的一个硬盘NTFS / FAT分区中,所以我得到bash权限被拒绝错误我应该怎么做才能运行代码?我无法将程序存储在usb(Linux分区)

2 个答案:

答案 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