linux服务器安装交叉编译与gpiod库

这两天在服务器上安装gpiod库时踩了许多坑,特意写篇笔记记录一下过程,以免下次还犯一样的错。笔记借鉴了许多其他文章,借鉴较多的有:

iMX6ULL 库移植 | Libgpiod 库的交叉编译及使用指南(linux)-CSDN博客

交叉编译libgpiod_gpiod.h编译不存在-CSDN博客

1:交叉编译器的安装

这里安装的是Linaro公司的gcc-arm-linux-gnueabihf 编译器,登录服务器,去官网上获得源码。

这里有其他博主讲解了详细过程:【Linux开发环境搭建】arm-linux-gnueabihf 交叉编译工具链安装_gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabih-CSDN博客

但是由于我是在服务器上进行安装,所以记录下本次过程。

1.1下载交叉编译器压缩包

wget https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

1.2将压缩包移动到自己想安装的目录中,并进行解压,我这里移动到/opt下

 sudo mv gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz  /opt
//解压缩
sudo tar -vxf gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf.tar.xz  

解压缩后opt目录如图所示

我对它进行了重命名(此步骤可有可无,本人按老师要求进行重命名)

//重命名
sudo mv gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf gcc-aarch32-10.3-2021.07 

1.3 修改环境变量

打开/etcc/profile文件,输入以下命令

//进入etc文件夹
cd /etc
//修改profile文件
sudo vim profile
//添加环境变量export PATH=$PATH:自己的路径/bin,表示将自己的路径追加到原有的path下
export PATH=$PATH:/opt/aarch32-10.3-2021.07/bin

1.4 更新服务器

//更新
sudo apt-get update

更新服务器后即可检查自己的交叉编译是否安装完成

 arm-linux-gnueabihf-gcc -v

若出现版本信息,则说明安装成功。

2:libgpiod库的安装

交叉编译器的安装较为简单,但是libgpiod库的安装对我来说踩了很多坑。

2.1:下载libgpiod源码压缩包

源码网址:libgpiod/libgpiod.git - C library and tools for interacting with the linux GPIO character device (kernel.org)

 

我这里下载的是V2.0版本,因为板卡上安装的是这一版


wget https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git/snapshot/libgpiod-2.0.tar.gz
//解压
tar -xzf libgpiod-2.0.tar.gz

 解压后如图所示:

2.2libgpiod安装

输入命令

./autogen.sh

 输入命令后文件夹如图所示 :

 修改Makefile文件,将其中的gcc更换成arm-linux-gnueabihf-gcc

更改prefix,这里是你想将库安装到哪个文件夹下,默认是/usr/local

//安装库
sudo make
sudo make install

安装后进入/usr/local文件夹

可以发现libgpiod库已经安装成功。

3:过程中遇到的问题以及方法

//备注:这里是我第二次安装这个库,特意将第一次安装的全删除了,但是第一次踩的坑第二次没有碰到,因为在第一次安装的时候就解决了不少环境问题,例如YUM的安装,./configure报错,镜像网址的密钥失效,sources命令错误等等。给出当初能解决安装过程中碰到的问题的博客:

Linux当中解决apt-get install E: 无法定位软件包问题(附上详细步骤以及注释)_apt-get install glade libglade1-dev显示无定法定位软件包-CSDN博cd linux下安装yum步骤_linux安装yum-CSDN博客

Ubuntu系统 apt-get update失败,出现“Certificate verification failed ”错误以及“无法安全地用该源进行更新“等问题解决办法_certificate verification failed: the certificate i-CSDN博客 

 configure: error: C++ compiler cannot create executables-CSDN博客

 使用source命令的时候提示source: command not found错误解决-CSDN博客

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中,gpiod是一个用于操作GPIO(通用输入输出)的API。它提供了一种简单而统一的方式来获取和控制GPIO资源。在不同的内核版本中,有不同的方法来获取和操作GPIO资源。 在老的内核版本中,可以使用of_get_named_gpio方法来获取GPIO资源的资源号,然后使用相应的方法对GPIO资源进行操作。例如,可以使用代码段1中的方法来操作GPIO资源。\[1\] 然而,在新的内核版本中,引入了新的gpiod_api。使用devm_gpiod_get方法可以获取一个类型为"struct gpio_desc"的结构体指针,然后可以使用gpiod_direction_output等方法来操作GPIO资源。例如,可以使用代码段2和代码段3中的方法来操作GPIO资源。\[3\] 需要注意的是,在使用devm_gpiod_get方法时,要对匹配字符串进行相应的修改,因为该方法会自动为我们加上"-gpio"或"-gpios"后缀。\[2\] 总之,gpiod是一个用于操作GPIO的API,在不同的内核版本中,可以使用不同的方法来获取和操作GPIO资源。 #### 引用[.reference_title] - *1* *2* *3* [Linux驱动开发---gpio和gpiod](https://blog.csdn.net/happy987818/article/details/76854306)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值