Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在同一系统上运行基于Unix的可执行文件_C_Macos_Unix_Terminal - Fatal编程技术网

C 在同一系统上运行基于Unix的可执行文件

C 在同一系统上运行基于Unix的可执行文件,c,macos,unix,terminal,C,Macos,Unix,Terminal,我在EclipseIDEforMac上创建了一个Tic-Tac-toec程序。然后,当我想在终端上运行该文件时,我在VIM上编写了该文件,当我运行它时,它工作得非常好。然而,我遇到的问题是,当我将同一个可执行文件(我将其上传到Mediafire,然后让他们下载)程序发送给许多朋友时,他们的Mac显然也有基于UNIX的操作系统,但该程序从未运行过。它不是一个可执行文件,而是一个文档。原因是什么?我如何使我的程序在其他基于Unix的操作系统上工作?您的朋友应该通过授予程序“执行”权限将其标记为可执行

我在EclipseIDEforMac上创建了一个Tic-Tac-toec程序。然后,当我想在终端上运行该文件时,我在VIM上编写了该文件,当我运行它时,它工作得非常好。然而,我遇到的问题是,当我将同一个可执行文件(我将其上传到Mediafire,然后让他们下载)程序发送给许多朋友时,他们的Mac显然也有基于UNIX的操作系统,但该程序从未运行过。它不是一个可执行文件,而是一个文档。原因是什么?我如何使我的程序在其他基于Unix的操作系统上工作?

您的朋友应该通过授予程序“执行”权限将其标记为可执行程序。将文件上载到Internet上的服务器时,其所有属性(如权限和时间戳)都将丢失

另一个选项是上传以存档格式打包的文件,该格式不保存属性。一个这样的选项是
tar
。要创建包含
程序的压缩tar文件,可以使用:

tar czf program.tar.gz program

你能给我一些关于tar方法的更多见解吗?答案中包含了创建这样一个文件的命令,你还想知道什么?如果我没记错的话,可以通过双击在OS X上对其进行解压缩。很抱歉,我得到了它,感谢您提供的未来见解和帮助。请注意,您的可执行文件将不会在OS X以外的Unix平台上运行。OS X二进制文件以Mach-O格式存储,而大多数Unix使用ELF(或a.out或COFF或…)(请参阅)。即使文件格式相同,ABI()中也可能存在差异,这使得可执行文件不可移植。通常,您必须为每个平台重新编译程序。