当前位置:  开发笔记 > 开发工具 > 正文

如何在Windows上交叉编译C代码,以便在Unix(Solaris/HPUX/Linux)上运行二进制文件?

如何解决《如何在Windows上交叉编译C代码,以便在Unix(Solaris/HPUX/Linux)上运行二进制文件?》经验,为你挑选了2个好方法。

我一直在研究Cygwin/Mingw/lcc,我喜欢能够在我的windows上编译perl本机C扩展(最好是在cygwin下),然后在Solaris和HP unix上运行它们而不用进一步大惊小怪,这可能吗?

这一切都从我原来的perl的跨平台问题源于这里.



1> Nathan Kidd..:

(这是一个非常古老的问题,但缺少一些有用的信息 - 我个人为Solaris(SPARC和x86),AIX,HP-UX和Linux(x86,x64)完成了这项工作.)

获得C++交叉编译要比直接C更难.

不支持HP-UX 32位PA-RISC,因为它使用SOM格式而不是ELF,而binutils不支持(也可能不支持)SOM.换句话说,您只能交叉编译64位PA-RISC.(需要PA-RISC 2.0芯片.)

如果可以的话,我会选择mingw而不是cygwin.Cygwin引入了许多文件权限头痛和cygwin1.dll依赖,这可能很麻烦.但是,如果可能的话,建立在Linux上.因为所有的工具和你正在运行脚本设计用于环境一切都将是更快execstat速度快的操作.Windows + NTFS不是那种环境.

从crosstools脚本开始,但要准备好花费大量时间.

首先尝试使用最新的gcc/binutuils,但如果你无法解决问题,请尝试使用旧版软件包.例如,对于Power3(AIX),gcc 4.x系列交叉编译器生成错误的代码,3.x很好.

复制本机库和标头时,请确保从可能运行的最旧的计算机进行复制.复制新的libc意味着您的代码将无法在具有较旧libc的任何计算机上运行.

复制本机库和头文件时,您可能希望'tar -h'将符号链接转换为实际文件,同时在Solaris上观察一些必需的crt目标文件隐藏在cc目录中,而不是在/ usr/lib下



2> Douglas Leed..:

交叉编译器很难设置并正常工作.

考虑到(NetBSD的人员)必须投入大量的工作才能使交叉编译工作,并且它们运行相同的操作系统,只是不同的架构.

您必须至少将所有标头从其他操作系统复制到Windows,并获得目标操作系统/体系结构的交叉编译器,链接器等.

这也许是不可能的 - perl和共享库可以用本机/非gcc编译器编译,这在Windows上根本不可用.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有