交叉编译开源代码(以libgpiod为例)

阅读: 评论:0

交叉编译开源代码(以libgpiod为例)

交叉编译开源代码(以libgpiod为例)

文章目录

  • 1.为什么要交叉编译
  • 2.交叉编译源代码
    • 2.1首先下载libgpiod,并解压缩:
    • 2.2修改配置文件
      • 2.2.1方法一:用文本编辑器打开Makefile,将所有涉及到编译的编译器改为交叉编译器,例如将gcc改为arm-linux-gnueabihf-gcc,注意必须修改每一处含有编译器的代码,否则可能移植后无法运行。
      • 2.2.2方法二:通过configure文件修改
  • 3.总结

1.为什么要交叉编译

  我们主力机的CPU一般架构为X86(),然而开发板的cpu大都为arm架构的,X86架构编译生成的二进制文件不能在arm架构上运行。因此我们需要在本机(例如linux虚拟机等)上使用交叉编译器编译源码,再把源码移植到开发板。
  安装交叉编译器:

sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

2.交叉编译源代码

  以libgpiod为例:

2.1首先下载libgpiod,并解压缩:

.git/refs/?h=v1.6.x
可以看到文件夹内有:

2.2修改配置文件

运行autogen.sh,将生成configure和Makefile文件,主要关注这两个文件:

2.2.1方法一:用文本编辑器打开Makefile,将所有涉及到编译的编译器改为交叉编译器,例如将gcc改为arm-linux-gnueabihf-gcc,注意必须修改每一处含有编译器的代码,否则可能移植后无法运行。


除了修改编译器,还需要修改生成编译后文件的路径。因为我们要将文件移植到开发板,所以我们不需要将生成的文件保存到本机系统目录下,所以我们要把prefix字段下的路径改为自定义的:

prefix = 你想保存的文件夹

然后使用编译安装:

make
make install

2.2.2方法二:通过configure文件修改

通过文本编译器打开configure文件,查看文件内容与参数。总结后可以使用命令来安装:

 ./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ RANLIB=arm-linux-gnueabihf-ranlib AR=arm-linux-gnueabihf-ar AS=arm-linux-gnueabihf-as NM=arm-linux-gnueabihf-nm STRIP=arm-linux-gnueabihf-strip OBJDUMP=arm-linux-gnueabihf-objdump --prefix=`pwd`/../install --enable-tools --host=arm-linux

执行后可以发现我们的Makefile文件被更新了,打开看看发现涉及到交叉编译器的地方已被修改,生成的路径也被修改了:


然后使用编译安装:

make
make install

如果出现报错:undefined reference to rpl_malloc
则去配置文件configure把含有此行的代码删除

3.总结

  编译完后将生成的文件夹打包移植到开发板,建议放在/opt/crosstool下,并为其添加环境变量。以libgpiod源码的交叉编译为例,其他库的方法大致相同。

本文发布于:2024-02-05 04:24:01,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170724056463008.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:为例   开源   代码   libgpiod
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23