致谢:【XE3】MN,让我加快完成了使用CodeTyphon进行交叉编译!
CodeTyphon版本:
6.0
下载:http://www.pilotlogic.com/codetyphon/zips/CodeTyphonIns.zip
主机操作系统:Windows10 X64 企业版
主机操作系统,是当前开发和编译FreePascal程序使用的操作系统,所有编译需要的程序开发、编译、测试都在这个操作系统完成,随后在这个操作系统中,不对源代码进行任何修改的情况下,编译出目标操作系统中的程序。
目标操作系统:Ubuntu16.04 X64
目标操作系统,是在主机操作系统中要生成可执行程序后,实际执行这个编译出来程序的操作系统,交叉编译后的程序就是这个操作系统中的可执行文件。
说明:CodeTyphon的交叉编译,应该可以在任意它支持的操作系统中,实现对它支持的任意操作系统的编译!!官方建议在linux下对其它操作系统的交叉编译,不要在Windows下对linux操作系统实现交叉编译,因为linux变化太快了!!我目前工作的操作系统是Windows10 X64 企业版,VM虚拟机中安装了Ubuntu16.04 X64,所以才用Windows10 X64 企业版做主机操作系统,Ubuntu16.04 X64做目标操作系统!!
我的CodeTyphon安装目录:
"C:\codetyphon",以下出现CodeTyphon安装目录均指这个目录,你自己查找CodeTyphon安装目录时候,需要注意是否和我的安装目录一样!
CodeTyphon真是一个强大的平台,只有你想不到的,没有它做不到的!!!
为了用一套源码,不加任何改动,在不同操作系统生成程序,我用两种方法实现了!!!!
一,在不同的操作系统中安装CodeTyphon:
如何在不同操作系统安装CodeTyphon:http://www.cnblogs.com/sunylat/p/6517272.html
这种方法比较简单实用,在一个操作系统中开发完毕程序后(编写、编译、测试都正确),最后把程序源代码拷贝到要编译的操作系统中,随后用CodeTyphon打开这个工程,和在任意操作系统中使用CodeTyphon一样,直接编译就可以了,随后就得到了在这个操作系统中的可执行文件了。
优点:编译过程中,容易发现是否缺少当前操作系统运行FreePascal程序需要的支持库,能够在编译过程中解决这些问题。
缺点:需要在每个操作系统中安装CodeTyphon。
尽管这种方法安装CodeTyphon比较麻烦,但是我推荐大家用这种方法编译FreePascal的程序,就是因为它容易在编译过程中发现问题,便于提前解决了实际运行程序中需要解决的问题,不至于等运行程序时候出现问题,导致不知道究竟是哪里出了问题!!!
上面方法只要大家会安装CodeTyphon,就能够实现,并不是这里讨论的重点,下面是本文重点讨论问题!!!!
二,用CodeTyphon实现交叉编译:
交叉编译的目的,就是在一个操作系统上开发和编译程序,随后在不更换开发工具和编译程序的操作系统、不修改任何源代码的情况下,生成其它操作系统中的程序!!这对于CodeTyphon来说真是小菜一碟!!!
1,准备编译目标操作系统程序的工具。
2,准备编译目标操作系统程序的库。
3,准备编译目标操作系统程序需要引用的单元文件。
4,配置工程编译属性。
要用CodeTyphon实现交叉编译,那么必须经过4个步骤,这4个步骤缺一不可!!对于同一主机操作系统到目标操作系统的交叉编译,如果已经完成过了交叉编译,再次进行交叉编译的时候,这些步骤中的前3项应该不需要了,只需要注意检查一下编译工程配置属性就可以了!!!
下面我就对上面4个步骤做详细说明:
获取编译需要的工具和库的方式:
1,在CodeTyphon中自动获取:
优点:直观,自动完成,无须搞清楚获取的详细过程和最终如何配置。
缺点:不一定能够一次获取成功,再次获取需要杀死先前启动的wget程序。
2,直接到CodeTyphon公司网站下载:
优点:可以使用断点续传的下载工具,获取成功率很高。
缺点:需要知道获取这些需要的工具和库,最终如何配置,并且正确配置好!
CodeTyphon默认情况下并没有提供交叉编译的工具和库,这样做也是非常容易理解的:
A,便于下载和安装:CodeTyphon不知道你要对哪些操作系统进行交叉编译,为了减小CodeTyphon安装包的体积,便于更快下载和安装CodeTyphon,所以没有提供更多交叉编译需要的工具和库。
B,定制更方便随意:用户完全可以按照自己需求定制CodeTyphon交叉编译环境。
对于这两种获取编译需要的工具和库的方式,在下面的两个步骤1和2中我会说明,下面就对各个步骤做详细说明:
1,准备编译目标操作系统程序的工具:
想要编译目标操作系统的程序,那么编译工具是必须的!!!那么我就分别采用两种方式获取编译目标操作系统程序的工具!!!
A,在Co