我一直在研究Cygwin/Mingw/lcc,我喜欢能够在我的windows上编译perl本机C扩展(最好是在cygwin下),然后在Solaris和HP unix上运行它们而不用进一步大惊小怪,这可能吗?
这一切都从我原来的perl的跨平台问题源于这里.
(这是一个非常古老的问题,但缺少一些有用的信息 - 我个人为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上.因为所有的工具和你正在运行脚本设计用于环境一切都将是更快exec
和stat
速度快的操作.Windows + NTFS不是那种环境.
从crosstools脚本开始,但要准备好花费大量时间.
首先尝试使用最新的gcc/binutuils,但如果你无法解决问题,请尝试使用旧版软件包.例如,对于Power3(AIX),gcc 4.x系列交叉编译器生成错误的代码,3.x很好.
复制本机库和标头时,请确保从可能运行的最旧的计算机进行复制.复制新的libc意味着您的代码将无法在具有较旧libc的任何计算机上运行.
复制本机库和头文件时,您可能希望'tar -h'将符号链接转换为实际文件,同时在Solaris上观察一些必需的crt目标文件隐藏在cc目录中,而不是在/ usr/lib下
交叉编译器很难设置并正常工作.
考虑到(NetBSD的人员)必须投入大量的工作才能使交叉编译工作,并且它们运行相同的操作系统,只是不同的架构.
您必须至少将所有标头从其他操作系统复制到Windows,并获得目标操作系统/体系结构的交叉编译器,链接器等.
这也许是不可能的 - perl和共享库可以用本机/非gcc编译器编译,这在Windows上根本不可用.