-
交叉编译,即在某一个基础平台上编译另一个平台能够运行的软件,如在x86平台编译arm程序,交叉编译的前提是存在交叉编译SDK,里面包含了适用于目标平台的编译工具链、系统库等交叉编译必备的依赖文件,编译时通过指定sysroot来重定向访问sdk中的文件;
-
编译过程涉及到编译、链接:
-
编译:
交叉编译的编译器是特别指定的,通过CMake设置交叉编译工具链文件,在编译时会根据环境变量,自动调用所需编译器;
库的头文件路径,交叉编译器有自己的基础库头文件路径,通过指定sysroot参数,指向sdk所在路径,即可自动查找新的平台基础库的头文件;
编译选项,可以通过环境变量的方式,设置初始的编译选项;
头文件路径、源文件与是否交叉编译无关; -
链接:
交叉编译的链接器是特别指定的,通过CMake设置交叉编译工具链文件,在内部可以指定交叉编译专属的链接器;
链接所需的系统库文件,同样通过sysroot参数,将库文件指向sdk路径,会自动在sdk路径下查找所需的动态库或静态库;
链接所需的自定义库文件,可以自己指定,和是否交叉编译无关; -
因此,实现交叉编译主要涉及两个部分,指定编译器、链接器等交叉编译工具链以及指定sysroot路径,这样编译过程中使用的工具、库文件、头文件都会被重定向到sdk所在路径;
[C/C++]交叉编译
最新推荐文章于 2024-05-13 08:32:17 发布