0

我的工作通常是从 Internet 获取开源。使用 MIPSEL 工具链交叉编译它并获取二进制文件。我很难交叉编译代码。交叉编译任何源包的一般步骤是什么。我使用平台Linux。例如,CC、ld 等等?每个源代码都有不同的结构,我无法确定包之间的相似性。我怎样才能交叉编译它?有没有系统的步骤来完成它?请指教。

4

1 回答 1

1

我只能假设您下载了一些随机的 OSS 压缩包并且现在卡住了。我只能给你一些指示,因为我还没有发现一个通用的、一刀切的解决方案,你可能需要做一些试验才能找到最适合你需要的方法。而且我还没有遇到过从头到尾没有一些调整、摆弄和大量耐心的非平凡交叉编译工作。

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