一般来说,为特定目标交叉编译任何开源的步骤是什么

时间:2013-07-31 16:59:57

标签: cross-compiling embedded-linux

我的工作一般是从互联网上获取开源。使用MIPSEL工具链交叉编译并获取二进制文件。我很难交叉编译代码。一般来说,交叉编译任何源包有哪些步骤。我使用Linux平台。比如CC,ld和还有什么? 每个源代码都有不同的结构,我无法弄清楚包之间的相似性。我怎么能交叉编译呢?是否有任何系统的步骤来完成它?请指教。

1 个答案:

答案 0 :(得分:1)

我只能假设您下载了一些随机的OSS tarball并且现在被卡住了。我只能给你一些指示,因为我还没有找到一个通用的,一个适合所有解决方案,你可能需要先试验一下才能找到最适合你需求的方法。而且我还没有遇到一个非常重要的交叉编译工作,从头到尾没有一些调整,摆弄和耐心。

  1. 基本解决方案:您需要一个适合您平台的工具链,如果有预先构建的内容满足您的需求,请查看here,或者转到Dan Kegel's crosstool page,这将在很大程度上自动创建它支持的平台的工具链,并且该工具链将允许您编译和链接除标准库之外没有其他依赖项的所有程序。
  2. 许多开源软件包都带有可识别交叉编译的autoconf配置脚本,即添加--target=xxxx实际上会使它们使用正确的交叉编译器。这通常会起作用,但可能涉及首先下载和交叉编译/安装一些库。主要问题是一个autoconf脚本,它试图编译一小段代码来研究它的输出,以确定环境的某些特性。有时,这可以通过手动修改配置或通过例如configure --without-xxxx
  3. 禁用某些不需要的功能来解决
  4. 如果您的目标系统是嵌入式Linux系统工具,例如BuildrootOpenEmbeddedELDK将自动化不仅可以创建可用的工具链,还可以自动化许多常见的交叉编译工具使用库并添加Linux的包。这些工具还允许您将其他包添加到其目标列表(例如,您创建或购买的自定义应用程序),但这可能涉及首先手动解决2)中解释的一些问题。但是,这些工具附带的补丁脚本可以用来了解常用的技巧来解决编译问题。