1 Star 0 Fork 3

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

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

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

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

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

空文件

简介

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

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C
1
https://gitee.com/VelsonWang/win2linux.git
git@gitee.com:VelsonWang/win2linux.git
VelsonWang
win2linux
window上交叉编译linux目标程序教程
master

搜索帮助