gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 11:49:11 24 4
gpt4 key购买 nike

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

最佳答案

您的问题可能是 NFS/VFAT 系统是使用 noexec 标志或 showexec 标志挂载的。它指示内核不要从这些分区运行任何可执行文件(一种安全措施)。

如果它是 showexec,那么只需将您的可执行文件命名为 .exe.com .bat 扩展名(是的,即使它是 Linux 可执行文件,vfat 驱动程序也使用该扩展名来推断可执行权限位)。

如果是noexec,继续阅读...

在较旧的内核上,您可以使用 /ld-*.so 技巧绕过此问题,但正如 man mount 评论:

noexec: [...] (Until recently it was possible to run binaries anyway using a command like /lib/ld*.so /mnt/binary. This trick fails since Linux 2.4.25 / 2.6.0.)

如果我的猜测是正确的,你有几个选择:

一个。以 root 身份使用此命令从分区中删除标志:

mount -o remount,exec <mount-point>

B.找出为什么你的分区有这个标志,哪个程序做的(gnome-disks 或其他)并改变它。

C.将您的程序编译到另一个分区,如果不在 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

关于c - 如果 linux 安装在 usb 上,如何在 Linux 中运行 c 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24292705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com