gpt4 book ai didi

C 的交叉编译要求

转载 作者:太空狗 更新时间:2023-10-29 17:07:29 26 4
gpt4 key购买 nike

我有一些关于编译 C 的基本知识,但需要回答几个通用的交叉编译问题。就我而言,我正尝试在我的 Fedora Linux 机器上交叉编译一个程序,该程序将在 ARM 单板计算机上运行。

  1. 我的第一个问题是关于标题的。我已经下载了 arm Linux 工具包,它在 include 目录中包含头文件,例如 stdio.h。当我交叉编译时,我是否应该使用这个“目标”包含目录而不是我的系统包含目录?还是可以指向我的系统的包含目录,例如/usr/include? (这些头文件我diff的时候好像不一样。)

  2. 如果头文件不存在会发生什么。就我而言,我还计划在 ARM 板上使用 cURL 库。我可以简单地指向我下载的 curl 源包中存在的 include 目录而不用担心目标体系结构吗?如果是,这是否意味着我的第一个问题无关紧要?

  3. 假设我想静态链接到一个库。在此之前是否需要为目标 ARM 平台编译此静态库?或者我可以直接使用我系统上安装的静态库(希望交叉编译过程处理业务)?

  4. 如果我决定动态链接到一个库,唯一的要求是目标系统有这个库为 ARM 编译并安装在 ARM 板上的 LD_LIBRARY_PATH 目录之一,我说得对吗?

感谢您的帮助。

最佳答案

  1. 始终使用目标 header 。它们可能与您的主机 header 不同。编译器应该已经将它们作为标准问题(例如 libc)的默认包含路径的一部分。
  2. 您需要使用交叉编译器将 cURL 构建到一个假的“目标”系统目录中,并在该目标目录中使用 cURL 构建您的应用程序。由于您还需要一个 cURL 库,因此您必须使用交叉编译器。对于交叉编译不友好的编译(例如构建程序然后作为编译的一部分运行),您将需要修改构建过程。有时 fakeroot 对脏构建系统很有帮助。
  3. 您不能随意将静态库用于与您的系统不同的体系结构。它们必须由交叉编译器构建。
  4. 不正确。图书馆通常必须在场。

关于C 的交叉编译要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120477/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com