是否可以从OS X计算机编译swift二进制文件,使其在运行Linux的服务器上作为单个二进制文件运行,而不需要动态链接的额外库?
我正在考虑将-target
传递给swift命令并传递另一个参数以使其静态链接所有依赖项,但我不确定具体命令是什么。
-target
的确切值似乎相当难以捉摸。
我是否需要知道确切的目标分布才能将正确的字符串传递给-target
参数?
答案 0 :(得分:12)
阅读github
上的来源主要由build script
调用这是如何回答问题的一部分
-target的确切值似乎相当难以捉摸。
为可以重新定位Linux的Mac OSX安装GCC工具链,例如我可以看到的一个仓库是OSXCross。
在运行脚本之前将环境变量的值提供给GCC,该脚本引用该工具链。
不幸的是,这并不能保证它会起作用,但试一试看看会发生什么。
答案 1 :(得分:2)
是否可以从OS X计算机编译swift二进制文件,使其在运行Linux的服务器上作为单个二进制文件运行,而不需要动态链接的额外库?
简短的回答?当然如此!当你把心投入其中时,一切皆有可能!
这是否有效?本质上,没有。
虽然我确信这里的每个人都熟悉编译器的功能,但为了这个问题及其最新用户,编译器是一个转换人类可读代码并映射它的应用程序到计算机可以理解的二进制格式。但值得一提的是,并非所有计算机都是相同的。每个计算机操作系统具有与另一个不同的二进制映射,因此像复制值这样的简单操作可以在一台机器上表示为1010,在另一台机器上表示为0101。如前面许多问题and for example this one中所述,许多编程语言在各种机器上都是 可构建 ,但很少有可移植< / em>跨越它们,因为每台计算机都有不同的二进制映射。
~~~~~~~ 那么我们如何解决这个问题? ~~~~~~~
早些时候你说你听过有人在谈论在Linux机器上编译windows程序。 Cygwin是一个开发平台,旨在获取Linux机器上通常不存在的Windows框架,并允许使用Windows框架构建许多程序。然而,它所做的只是添加二进制文件,以便编译器在配置中找到仅Windows命令时有一些适当的映射位置。它所做的就是引入程序成功移植所需的二进制配置。这与第二种选择有关。
即使这样,像这样的系统也很少,它的保证是否有效取决于编译器维护者对其内容的了解程度,更新频率等等等等。并且他们甚至可以执行以纠正映射的机会首先,二进制文件不是我生活中的重点。
Docker为容器到容器通信,应用程序示例提供了一个有趣的框架,并且有一个相当简单的文档,值得一看,看看你的项目是否可以把它的一些部分移植到docker。
话虽如此,有多种方法可以解决您目前面临的问题,因此当您是软件工程师时,您可以通过最理想的方式处理您的项目。
//编辑//
一旦我感到疲惫不堪就会编辑这个更好的回应。