更新:

更新:

我有一个 C 程序,并使它可以在我的 32 linux mint 上执行。出于作业目的,我必须测试它是否可以在大学泳池计算机上运行。老实说我不知道​​那里安装了哪些linux发行版,只是花了两分钟才真正看了一下,但我知道它也是32位系统。

因此,当我尝试在终端()中运行它时./program,出现bash permission denied错误,我知道这意味着该文件不可执行,因此我chmod u+x program再次运行命令以使其可执行,然后它就工作了,我的程序在我的笔记本电脑上运行得很好。

有谁知道这可能是什么原因?我的意思是,显然,我的文件是可执行的,至少在我的 linux mint 上是这样,为什么它不在其他 Linux 发行版上呢?

也许我必须以另一种方式使其可执行?我只知道前面提到的那个chmod u+x program

更新:

正如评论中提到的,我将文件传输到大学计算机的方式是:从谷歌驱动器下载。现在我在我的笔记本电脑上进行测试,但在另一个系统(UBUNTU)上进行测试,我再次尝试从谷歌驱动器下载单个文件,问题是相同的:不可执行。然后我对文件进行了 tar 压缩(正如 Richard 所建议的),解压后文件立即可执行,所以这让我得出结论:如果我 tar 压缩它,它也应该可以在任何其他系统上执行,在本例中是我的大学计算机。

答案1

因为您没有这样做chmod u+x,所以非 unix 文件系统不会存储此数据,它位于文件之外:执行位未复制到 google-drive。因此你必须chmod再次奔跑。

在编译它的机器上,您不必运行chmod,因为编译器会为您执行此操作。

只要您将其保留在 Unix 生态系统中,该x位就会保留下来。然而 google-drive 不是 Unix(尽管它在 Unix 上运行)。tar是一个可以将大量文件/目录以及所有元数据包装到单个文件中的程序。

相关内容