以下内容全部建立在交叉编译工具链已经安装完的前提下,如果没有安装,寻找对应的工具链按README操作即可
交叉编译第三方库
操作方法
包含configure的项目
# 这里是交叉编译工具链安装的根目录,这个目录下的文件夹应该包含bin之类的
source /opt/petalinux/2022.1/environment-setup-cortexa72-cortexa53-xilinx-linux
# 配置configure
./configure --host=aarch64-xilinx-linux --prefix=$PWD/install
# host:编译出来的二进制程序所执行的主机
# prefix:用来指定最后make install的安装路径,默认路径是本机的/usr/bin,但我们目的是安装在板上,如果编出来的同名文件覆盖了本机的二进制文件会有大问题,所以在本地新建一个临时目录用来存放,最后全部复制到板上/usr对应位置
make
make install
这里source,host都要更改为你所需要的交叉编译工具链的位置和名称,不要直接复制,不要直接复制,不要直接复制!
直接make的项目
可以先打开makefile文件,看到里面有如下内容:
CC = $(CROSS_COMPILE)gcc
所以这里我们要设置CROSS_COMPILE
变量,使其对应我们的交叉编译工具。
同时注意到安装目录部分有:
prefix =/usr/local
sbindir =$(prefix)/sbin
mandir =$(prefix)/man
man8dir =$(mandir)/man8
同样为了不污染我们的目录,需要单独创建一个文件夹,这里同样修改为prefix=./install
最后使用如下方法编译:
make CROSS_COMPILE=aarch64-xilinx-linux-
注意不要忘记最后的横杠,且此处也需要修改为你要用的交叉编译工具名称。
交叉编译第三方库(扩展库)时依赖另外的第三方库(基础库)
-
先编译基础库,基础库要安装在交叉编译器所在的目录的对应位置下
--prefix = /opt/petalinux/2022.1/sysroots/x86_64-petalinux-linux
-
在编译并安装扩展库(同普通方法)
交叉编译缺少头文件
先找到交叉编译工具链所在位置,比如在/opt/petalinux/2022.1/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux
中。
在命令行中输入
echo 'main(){}' | /opt/petalinux/2022.1/sysroots/x86_64-petalinux-linux/usr/bin/aarch64-xilinx-linux/aarch64-xilinx-linux-gcc -E -v -
目录换成你的交叉编译工具所在目录,不要直接复制
注意最后是-E -v -
,不要删掉那个横杠
在输出中找到#include <...> search starts here:
,将所需要的头文件复制到该目录下。