LLVM——交叉编译的配置
记录一下LLVM交叉编译踩的坑
交叉编译
关于这个概念其实很简单,生成其它平台上的可执行文件的编译过程就叫交叉编译。
环境准备
第一步先实现最简单的跨平台交叉编译,我使用Windows版本的LLVM,尝试编译 Linux 平台的 ELF 文件。首先交叉编译要进行一定的环境配置,配置 include path 和库的目录。因为交叉编译需要用到一些 gcc 的库,所以自己编译 glibc 然后复制 include path 和 lib path 到自己的机器是没用的。
这里我选择直接使用一台自己装过 gcc 开发环境的机器,将 /usr/include
目录的文件拷贝过来,这里我拷贝到 D:\Linux\include
下,再将 gcc 的库拷贝到 D:\Linux\lib\
目录下。这里还有一个坑就是启动文件也需要指定,启动文件在 gcc 里面都有。
最后编译的命令行为: clang -fuse-ld=lld -g main.cpp -target x86_64-linux-gnu -ID:\Linux\include -L-BD:\Linux\lib\gcc\x86_64-linux-gnu\11 -o main -BD:\Linux\lib\gcc\x86_64-linux-gnu\11
即可。
但是注意,因为好像这个目录下的 lib 是软链接 /usr/lib/x86_64-linux-gnu
下的库,所以需要用下面的库进行覆盖才可以完成编译。
目前看上去效果还不错,特此记录一下,后面做 ARM 平台的交叉编译可以 refer 这次的经历。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 xia0ji233's blog!