簡體   English   中英

如果在usb上安裝linux,如何在Linux中運行c代碼

[英]How to run c code in Linux if linux is installed on usb

我已經在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 :[...](直到最近,無論如何都可以使用像/lib/ld*.so / mnt / binary這樣的命令來運行二進制文件。這個技巧因Linux 2.4.25 / 2.6.0而失敗。)

如果我的猜測是正確的,你有幾個選擇:

A.使用此命令以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

將文件復制到/tmp ,設置執行權限,你應該好好去,直到你重新啟動,然后你將不得不重復它。

cp /path/to/wherever/myprogram /tmp/myprogram
chmod +x /tmp/myprogram
/tmp/myprogram

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM