以下是关于如何在ubuntu下安装libgpiod库的两种安装方式以及遇到ubuntu存在多个工具链导致编译失败的解决方法。
如果想要自由选择使用不同版本的libgpiod,可以选择手动编译安装方式,系统安装默认1.6.3版本(ubuntu22.04)。
手动编译安装
1、在github上下载要安装的对应版本的库文件的包
2、在ubuntu下解压并进入libgpiod-2.2.x的路径下
3、运行如下命令安装好配置工具
sudo apt install autoconf automake libtool pkg-config perl autotools-dev //安装工具链依赖
sudo apt-get install autoconf-archive //安装拓展宏集合
4、运行libgpiod-2.2.x路径下的 autogen.sh
./autogen.sh
如果出现以下错误:
错误提示显示找不到需要的依赖,那可能是因为你的unbuntu可能安装了多个编译工具链,通过sudo apt-get install安装的autoconf、automake等工具是x86_64系统版本,安装在usr/bin/等系统路径下,但你在PATH中优先设置交叉编译工具链的路径,例如我使用的是aarch64的工具链,由于之前在PATH中优先设置了交叉编译工具的路径:
而工具链可能自带了一个aarch64版本的autoreconf,运行./autogen.sh的时候libgpiod-2.2.x会尝试调用工具链内部的Perl模块,但模块路径不完整从而导致错误。
对此,可以使用以下解决方法:
在运行./autogen.sh前,临时将系统路径放在前面:
export PATH=/usr/bin:/usr/sbin:$PATH
./autogen.sh
编译完后再恢复工具链路径:
export PATH=/opt/aarch64-rk3568-linux-gnu/bin:$PATH
编译成功后的包长这样:
接下来根据个人需求选择安装路径,这里我为了避免污染系统,就自定义了一个路径存放,如果仅用于本地开发测试的也可以这样做,全局安装则需要安装到/usr/local目录下:
./configure --prefix=安装路径
make -j4
make install
安装后包长这样:
后续在工程中如果需要使用到libgpiod的相关函数接口,就直接把这个包复制进工程里面就可以了。
系统安装
sudo apt update //更新软件包列表
sudo apt install libgpiod //安装系统仓库中预编译好的 libgpiod 库及其依赖(如动态库、工具等)