首页 » 99链接平台 » 让C语言也一次编译到处运行的开源项目(项目语言编译船帆运行)

让C语言也一次编译到处运行的开源项目(项目语言编译船帆运行)

萌界大人物 2024-11-03 22:01:44 0

扫一扫用手机浏览

文章目录 [+]

Cosmopolitan项目的名称本身就体现了其愿景——创建一个不受传统限制的自由软件环境。
通过这种方式,Cosmopolitan希望使C语言成为一个真正的“编写一次,到处运行”的语言,这对于新项目的起步开发(greenfield development)尤其有价值。

技术实现

Cosmopolitan项目的技术实现非常巧妙。
它利用了UNIX Sixth Edition shell脚本的特性,该脚本没有使用shebang行,从而允许将Windows Portable Executable(PE)文件编码为UNIX shell脚本。
这意味着,通过特定的编译器配置,可以在Linux上生成能够在多个平台上运行的二进制文件,而无需依赖特定的操作系统界面API。

让C语言也一次编译到处运行的开源项目(项目语言编译船帆运行) 99链接平台
(图片来自网络侵删)

编译示例

Cosmopolitan提供了一个编译示例,展示了如何使用GCC编译器生成这种跨平台的二进制文件。
这个过程涉及到一系列的编译器选项,包括禁用位置无关代码(PIE)、静态链接、以及指定二进制格式等。

平台无关的C/C++/FORTRAN工具链

Cosmopolitan项目还提供了一种平台无关的工具链,使得跨平台的本地构建变得异常简单和经济。
例如,Cosmopolitan生成的可执行文件大小远远小于Go语言的“Hello World”程序,这表明了其在资源利用上的高效性。

PKZIP可执行文件作为容器

Cosmopolitan项目还探索了使用PKZIP格式作为可执行文件的容器。
由于PKZIP的设计允许在文件末尾放置其魔术标记,因此可以在ZIP文件中合成ELF/PE/MachO二进制文件。
这不仅使得单个文件可执行文件成为可能,而且还可以在Windows 10中将文件扩展名更改为.zip,并使用Microsoft的ZIP GUI打开它,从而提供了在编译后轻松编辑资源的灵活性。

x86-64 Linux ABI作为通用语言

Cosmopolitan项目还强调了x86-64 Linux ABI作为通用语言的重要性。
由于硬件架构的共识,以及Linux内核中定义的系统调用(SYSCALL)ABI,Cosmopolitan项目认为现在是系统工程的最佳时期,我们比以往任何时候都更倾向于共享共同的事物。

长期维护与兼容性

Cosmopolitan项目还考虑到了软件的长期维护和兼容性。
通过使用已经达成数十年共识的二进制接口,并忽略API,Cosmopolitan希望能够创建出能够经受时间考验的软件,而无需进行大量的维护工作。

总的来说,Cosmopolitan项目是一个雄心勃勃的尝试,它试图通过创新的技术手段,为软件开发者提供一个更加自由、灵活且高效的开发环境。
通过这种方式,Cosmopolitan希望能够推动软件开发的进步,让跨平台开发变得更加容易和普遍。

相关文章