是否有可能从OS X计算机编译一个swift二进制文件,以便它运行在一个运行Linux的服务器上作为一个单独的二进制文件,而不需要额外的库需要dynamic链接?
我-target
传递一个-target
到swift命令,并传递另一个参数,让它静态链接所有依赖,但我不知道确切的命令是什么。
-target
的确切值似乎是相当难以捉摸的。
我是否需要知道确切的目标分布才能将正确的string传递给-target
参数?
从阅读github上的资源
这由主构建脚本调用
这怎么回答问题的一部分
-target的确切值似乎是相当难以捉摸的。
为Mac OSX安装一个GCC工具链,可以重定向Linux,例如,我可以看到一个回放是OSXCross 。
在运行脚本之前将这些值提供给GCC的环境变量,引用该工具链。
不幸的是,这并不能保证它能正常工作,但试试看看会发生什么。
是否有可能从OS X计算机编译一个swift二进制文件,以便它运行在一个运行Linux的服务器上作为一个单独的二进制文件,而不需要额外的库需要动态链接?
简短的答案? 当然如此! 任何事情都可能,当你把你的心!
它有效吗? 本质上,没有。
虽然我确信这里的每个人都熟悉编译器的功能,但为了这个问题和最新的用户, 编译器是一个应用程序,它可以转换人类可读的代码,并将其映射为计算机可以理解的二进制格式。 不过值得一提的是,并不是所有的电脑都是一样的。 每个计算机操作系统都有不同的二进制映射,所以像复制值这样的简单操作可以在一台机器上表示为1010,在另一台机器上表示为0101。 正如之前在许多问题中所说的,例如这个 ,很多编程语言都可以在各种机器上构建 ,但是很少有编程语言是可 移植的 ,因为每个计算机都有不同的二进制映射。
~~~~~~~ 那么我们该如何解决呢? ~~~~~~~
早些时候你曾经说过,你听过有人在讨论在linux机器上编译windows程序的问题。 Cygwin是一个开发平台,旨在获得通常不在linux机器上的windows框架,并允许用windows框架构建许多程序。 然而,它所做的只是添加二进制文件,以便在配置中找到仅限Windows命令时,编译器具有一些适当的映射位置。 它所做的一切就是介绍程序成功移植所需的二进制配置。 这关系到第二个选项。
即使这样,这样的系统也是少之又少,它是否保证工作取决于编译器维护人员知道他们的东西的程度,他们更新的频率等等。而且他们甚至执行了纠正二进制文件映射的机会第一个地方不是我想要的。
Docker提供了一个有趣的容器到容器通信的框架,应用程序示例,并有一个相当直接的文档,值得一看,看看你的项目是否可以将一些部分移植到docker。
这就是说,有多种方法可以解决你当前面临的问题,所以当你成为一名软件工程师时,这对你来说是最理想的处理你的项目的方式。
//编辑//
一旦我不累不累,将编辑这是一个更好的回应。