window上交叉编译linux目标程序教程

介绍

在windows上使用交叉编译linux目标程序。举例来说,在windows编译一个hello.c文件生成hello目标程序,在linux运行hello能够输出hello world。 让大家少走弯路

实现原理

  1. C语言编译原理:编译就是将C语言转换成机器指令的过程,理论上只有能够写出合适的编译工具,我们就能再windows上编译任何目标机器的可执行程序。接触过VxWorks开发的同行一定深有体会。
  2. 本方案的实现原理就是通过crosstool-ng生成windows到linux的gcc编译工具,然后使用该工具来编译linux程序。
  3. 本方案使用到了cygwin,但是需要注意的是:cygwin仅仅提供了一个类linux的操作环境,并没有实质性的影响。也就是说你可以不用cygwin,你仅需要你自己编译的交叉编译工具或者本方案提供的编译好的交叉编译工具就可以实现你想要的效果。甚至可以明确的是:这里的交叉编译工具就是可执行程序:i686-unknown-linux-gnu-gcc.exe或者x86_64-unknown-linux-gnu-gcc.exe,以及一些linux上的头文件(.h)和共享库(.so,.lib)。

一些概念及参考

  1. 第一个C语言编译器是怎样编写的?
  2. Building a linux cross-compile toolchain under Cygwin64 on Windows 我的主体思路都来自这里,感谢该作者
  3. 网易: Cygwin镜像使用帮助

使用说明

读者请注意,我不推荐大家自己编译交叉编译工具,因为过程很慢并且容易出错,直接使用我提供的文件将会快速得到你想要的!

  1. 下载我提供的资源
  2. 安装cygwin到C:\cygwin64也就是默认安装
  3. 将 除cygwin外的文件拷贝到C:\cygwin64\home${你的用户名}\work目录,work需要你新建
  4. 在cygwin终端cd到该目录,使用tar xzvf XXX分别解压4个编译工具,注意每解压完一个都需要给文件夹重命名,否则前面解压的会被覆盖。
  5. 将设个编译器的bin目录都添加到环境变量path中。例如C:\cygwin64\home${你的用户名}\work\i686-unknown-linux-gnu-7.2.0
  6. 解压gcc-test.zip ,cd 到gcc-test;
  7. 运行 make,然后你会在build目录得到linux上可以自行的文件,拷贝到linux机器去执行吧。

资源

gcc-test.zip

x86_64-unknown-linux-gnu-9.2.0.tar.gz

i686-unknown-linux-gnu-9.2.0.tar.gz

x86_64-unknown-linux-gnu-7.2.0.tar.gz

i686-unknown-linux-gnu-7.2.0.tar.gz

 

 

有疑问欢迎邮件联系我logbug@aliyun.com

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值