C的交叉编译要求

前端之家收集整理的这篇文章主要介绍了C的交叉编译要求前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些关于编译C的基本知识,但需要回答一些通用的交叉编译问题.就我而言,我试图在我的Fedora Linux机器上交叉编译一个程序,该程序将在ARM单板计算机上运行.

>我的第一个问题是关于标题.我已下载arm Linux工具包,它在include目录中包含头文件,如stdio.h.当我交叉编译时,我是否应该使用这个“目标”包含目录而不是我的系统包含目录?或者可以指向我的系统包括目录,例如/usr/include? (当我对它们进行区分时,这些头文件似乎有所不同.)
>如果头文件不存在会发生什么.就我而言,我还计划在ARM板上使用cURL库.我可以简单地指向我下载的curl源包中的include目录,而不必担心目标体系结构吗?如果是,这是否意味着我的第一个问题无关紧要?
>假设我想静态链接到库.在发生这种情况之前,是否需要为目标ARM平台编译此静态库?或者我可以直接使用我系统上安装的静态库(希望交叉编译过程能够处理业务)吗?
>如果我决定动态链接到库,唯一的要求是目标系统将此库编译为ARM并安装在ARM板上的一个LD_LIBRARY_PATH目录中,我是否正确?

谢谢您的帮助.

解决方法

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

猜你在找的C&C++相关文章