这两天在服务器上安装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源码压缩包
我这里下载的是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博客