该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

一.前言

Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的。Windows平台根本无法直接利用这些源代码资源。如果想要使用完整的代码,就要做移植工作。因为C/C++ Library的不同和其他的一些原因,移植C/C++代码是一项困难的工作。本文将以一个实际的例子(Tar)来说明如何把Linux代码移植到Windows平台上。移植过程将尽量少修改代码,以便代码的运行逻辑不会发生任何变动。保留绝大部分软件主要功能。

二.准备工作

Tar是Linux平台下面一个打包工具。移植这样一个程序到windows平台需要做那些工作呢?

首先是一些准备工作,在Windows平台上面安装上Cygwin的最新版本,在Cygwin中安装好GCC等开发工具。 同样也需要一个Windows开发环境。可以使用最新版本Visual Studio, Microsoft Visual Studio .NET 2003。从www.gnu.org上取得Tar的最新源代码,版本是1.13。在Cygwin下面解开tar-1.13.tar.gz.源代码包。注意请不要在Windows下面使用WINRAR或者WINZIP来解压缩。 WINRAR和WINZIP在解压缩某些tar.gz包的时候会有问题。使得解包之后的目录和文件出现异常。如果是源代码包将有可能不能在Cygwin下面正确编译。解开压缩包之后,进入 tar-1.13目录,在当前的目录下面输入

./configure

命令,运行完毕之后,再次输入

make

命令。开始编译tar的Cygwin版本。

编译基本上不会有问题,进入src目录,可以看到新编译好的Tar程序tar.exe。

Cygwin是一个API层的Linux模拟环境。如果能够在Cygwin下面编译,运行。实际上也就是能在Windows下面编译和运行,只是需要有一层中间API模拟某些Linux特有的操作。简单的判断一个Linux程序能不能移植到Windows平台下面,就是看是否能在Cygwin下面编译源代码,并运行程序。

在Cygwin中编译Tar的源代码,判断能否移植只是其中一个原因。另外一个原因是移植代码过程中需要一个特殊的头文件config.h。config.h是移植过程中最重要的源代码文件。Config.h文件并不是源代码本身的一部分。文件是在Cygwin下面运行”./configure”命令时生成的。在Cygwin下运行”./Configure”命令时,会根据Cygwin平台开发环境生成config.h文件。编译时也需要config.h文件对代码编译项进行控制。移植工作也以config.h文件为基础。

接下来就是构造Windows工程。先用Visual Studio .NET 2003创建一个空的工程(Project),命名为WinTar。根据Cygwin中的编译输出信息,Tar主要的代码在Src和lib两个目录中。把这两个目录复制到新工程里,并把代码加入到工程中。然后复制Config.h到WinTar工程目录下面。

准备工作基本上完成了,接着就是移植。移植过程可以分为3个部分。

tar在linux编译为exe,将Linux代码移植到Windows的简单方法 1相关推荐

  1. 将Linux代码移植到Windows的简单方法

    将Linux代码移植到Windows的简单方法 一.前言 Linux拥有丰富各种源代码资源,但是大部分代码在Windows平台情况是无法正常编译的.Windows平台根本无法直接利用这些源代码资源.如 ...

  2. linux编译安装的好处,Linux学习—源码安装

    源码安装--可以按照自己的需求安装,这是源码安装的好处,而二进制安装无法选择 大部分的源码安装步骤大致相同,具体细节可以参考解压缩之后的README和INSTALL README: 介绍了软件包的功能 ...

  3. 修改linux编译配置文件,Porting:linux内核编译、配置、修改配置文件、添加.c文件到内核...

    一.linux内核 $:'uname -a $:'uanme -r // 查看linux内核版本,开发板上进入linux后是一样的命令. 早起常常使用的版本:linux 2.6.x 开发板上使用的版本 ...

  4. linux编译c如何延时,linux和windows下,C/C++开发的延时函数,sleep函数

    简介: 函数名: sleep 功 能: 执行挂起一段时间 用 法: unsigned sleep(unsigned seconds); 在VC中使用带上头文件 #include 在gcc编译器中,使用 ...

  5. linux编译对cpu要求,Linux系统中使用GCC CPU参数优化代码编译

    使用特定的GCC参数可以使编译出的程序执行效率有较大提升.具体如下: 1.优化原理: 在编译程序时,借助参数传递的方法,使用与系统CPU相匹配的gcc参数,编译出的程序就是为系统CPU而进行特定优化过 ...

  6. linux编译blas,科学网—Linux下安装blas和lapack包小记 - 徐博伦的博文

    系统是centOS6.5,机器上已有gfortran编译器 从网上搜索下载blas.cblas.lapack的tar压缩文件包 1.编译blas 先解压文件 tar xvf blas.tgz cd b ...

  7. linux编译驱动报错,Linux编译声卡驱动

    关于Linux编译声卡驱动: 惠普笔记本刚买来时,安装Debian 5,通常会遇到两个问题.一个是无线网卡驱动没有安装,一个是"带上耳机可以听歌,但是喇叭无法发声". 对于前面一个 ...

  8. linux编译内核支持pam,linux编译内核make menuconfig报错解决办法

    linux编译内核时 输入make menuconfig命令 *** Unable to find the ncurses libraries or the *** required header f ...

  9. linux编译内核报错,linux编译内核时出报错;

    因为以前已经编译了,所以就很简单的连接: [root@bache linux-2.6.29]# make defconfig *** Default configuration is based on ...

最新文章

  1. 22.6. Query 查询
  2. java中final关键字的用法
  3. .Net 中的反射(反射特性) - Part.3
  4. 学车比学计算机简单,帅哥自述:学车比上班还要累
  5. 斯坦福大学机器学习第一课“引言(Introduction)”
  6. pdo连接mysql数据库(简洁明了)
  7. 计算机二级考试答题无法启动ppt,计算机二级考试中操作题常见问题之[演示文稿]...
  8. python pillow库下载_054-python库Pillow
  9. 知道端口号如何查看应用位置
  10. easyui的tree节点的获取和选中
  11. trie树的数据结构_C / C ++中的Trie数据结构
  12. 相机模型与标定(五)--opencv棋盘格角点检测算法
  13. matlab hspice联合仿真,matlab hspice
  14. 数学分析教程(科大)——3.6笔记+习题
  15. V部落博客管理平台开源啦! Vue+SpringBoot强强联合!
  16. K8S环境快速部署Kafka(K8S外部可访问)
  17. 计算机网络 有效数据率,在计算机网络中,表征数据传输有效性的指标是( ) A.误码率 B.频带利用率 C.信道容量 D.传输速率...
  18. mac os下 Ruby环境安装方法
  19. uniapp登录页设计
  20. 模拟网上手机抽奖界面(供大家BS......)

热门文章

  1. Solr相关概念详解:SolrRequestHandler
  2. c++频繁读取数据会丢失_透析中会丢失什么营养?透析日的饮食需要注意什么?...
  3. python经济统计_给统计人讲python(3)模拟城市_数据分析
  4. ajax 清洗剂,Choice浴室清洁剂大测评!最好用的只要$3.5!这些产品最好别买...
  5. java是怎么实现文件上传的_java怎么实现大文件上传
  6. wxpython textctrl_如何从wxpython中的textctrl接受值
  7. java 定义方法_java如何定义方法
  8. java装饰模式_Java装饰者模式实例详解
  9. 2021牛气新年素材模板,你真的不来看一看吗?
  10. UI设计素材|如何为数据可视化选择更漂亮的颜色