C/C++编译器

C/C++ 代码是不可跨平台的,Windows 和 Unix-like 有着不同的 API,C/C++ 在不同平台有着不同编译器。

MSVC

Windows 平台,MSVC 是 Visual Studio 中自带的 C/C++ 编译器。

GCC

Unix-like 平台,GCC 原名 GNU C Compiler,后来逐渐支持更多的语言编译(C++、Fortran、Pascal、Objective-C、Java、Ada、Go等),所以变成了 GNU Compiler Collection(GNU 编译器套装),是一套由 GNU 工程开发的支持多种编程语言的编译器。不过随着时间推移,由于各种原因,GCC 除核心语言 C/C++ 之外语言的编译器要么不再维护,要么支持的规范有限(例如 GCC 中的 Java 编译器 gcj 已被废弃,主流使用 JDK 中的 javac,其他非核心语言编译器处境大同小异),故实质上 GCC 目前核心就是 gcc 和 g++。

如何从Unix-like系统向Windows系统移植软件?

现代操作系统包括Windows和Linux的基本设计概念,像进程线程地址空间虚拟内存这些都大同小异,二者之上的程序之所以不兼容,主要是它们对这些功能具体实现上的差异:

首先,是可执行文件的格式,Window使用PE的格式,并且要求以.EXE为后缀名,Linux则使用Elf。

其次,操作系统API也同,比如,Windows用CreateProcess()创建进程,而Unix-like系统则使用fork(),其他还有很多诸如spawn、signals、select、sockets等。

分析之后可知,要把Unix-like系统上的软件移植到Windows上,有几种思路:

第一种:修改软件源码并重新编译,这个方法最笨,类Unix下大量的软件要修改工作量很大,编译生成目标平台可执行文件格式。

第二种:不修改软件源码但把类Unix接口调用悄悄替换为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值