轉移到其他系統後的執行檔問題
我有一個 C 程序,並使它在我的 32 linux mint 上可執行。出於分配目的,我必須測試它是否在大學游泳池電腦上工作。老實說,我不知道那里安裝了哪些 linux 發行版,只是有兩分鐘沒有真正看一下,但我知道它也是 32 位系統。
因此,當我嘗試在終端(
./program
)中執行它時,出現bash permission denied
錯誤,我知道這意味著該文件不可執行所以我chmod u+x program
再次執行命令以使其可執行,然後它執行了,我的程序執行良好,就像在我的筆記型電腦上一樣.有誰知道這可能是什麼原因?我的意思是,顯然,我的文件是可執行的,至少在我的 linux mint 上是可執行的,它不在其他一些 linux 發行版上的原因是什麼?
也許我必須以另一種方式使其可執行?我只知道前面提到的那個
chmod u+x program
。更新:
正如評論中提到的,我將文件傳輸到大學電腦的方式是:從Google驅動器下載。現在我在我的筆記型電腦上進行了測試,但在另一個系統(UBUNTU)上,我再次嘗試從Google驅動器下載單個文件,問題是一樣的:不可執行。然後我 tar-ed 文件(正如 Richard 建議的那樣),解壓後文件可以立即執行,所以這讓我得出結論,如果我 tar,它也應該可以在任何其他系統上執行,在這種情況下是我的大學電腦.
因為你沒有做
chmod u+x
,非 unix 文件系統不會儲存這些數據,它在文件之外:執行位沒有復製到 google-drive。因此,您必須chmod
再次執行。在您編譯它的機器上,您不必執行
chmod
,因為編譯器會為您執行此操作。只要您將其保留在 Unix 生態系統中,該
x
位就會保留。但是 google-drive 不是 Unix(儘管它在 Unix 上執行)。tar
是一個程序,它可以將我們的大量文件/目錄以及所有元數據包裝到一個文件中。