ubuntu下源码编译libinput库

        近期由于项目中需要用到libinput库文件,但实际运行的设备中可能涉及到x86架构的CPU和ARM架构CPU两种,因此考虑到ARM架构下的系统很多都是裁剪过的,且工作机器不一定联网,因此需要将libinput库通过源码编译生成对应的库文件。

        libinput的源码在网上能搜到,但大多数都是基于meson脚本和ninja编译的。因为使用的容器进行开发,而meson的依赖包又有一大堆,为了编译一个库而安装一大堆依赖包在容器里面,很麻烦也不利于项目组成员之间统一开发环境。因此决定找一个不使用meson和ninja编译的libinput的源码。最终在一个debian的gitla库上找到了一份使用automake编译的libinput库。

        源码路径在此,需要自取:Files · ubuntu · X Strike Force / lib / libinput · GitLablibinput packaginghttps://salsa.debian.org/xorg-team/lib/libinput/-/tree/ubuntu?ref_type=heads        automake的操作作为开发人员肯定就比较熟悉了,这里就不多介绍了。重点记录下编译过程中的一些小问题。

        1.依赖包安装

        最开始通过autogen.sh生成后,默认就执行configure进行配置,然后就报了一堆依赖包缺失。根据提示缺失的包逐个安装。算了下这些包安装下来消耗了600~800M左右的空间。虽然磁盘空间不值钱,但是对于一个docker容器来说,最好还是不要过于太大了,要不然需要分享容器镜像的时候就有些费时间了。依赖包逐个装好之后,编译生成静态库和动态库都没有问题。

        2.删减依赖包

        根据执行configure之后的提示,部分功能是可选的,也就是可以不要这部分功能,如此也就不需要对应的依赖包。configure执行时添加参数禁用功能:--disable-documentation --disable-debug-gui --disable-tests --disable-libwacom。

        -disable-documentation 不生成文档,因此不需要依赖dot

         --disable-debug-gui 不要UI,因此不依赖gtk相关的所有包

        --disable-tests 不编译测试用例

        --disable-libwacom 不适用wacom,因此不依赖libwacom库

        如此调整后,最终必须依赖的安装包仅有libmtdev-dev和libevdev-dev两个。

        最终configure命令:

        ./configure --enable-shared --disable-documentation --disable-debug-gui --disable-tests --disable-libwacom

        3.动态库和静态库的差别

        configure配置时--enable-shared是生成动态库,--enable-static是生成静态库,默认不给这两个参数时就是生成动态库。根据实际生成的动态库和静态库来看,动态库与通过apt安装的差别不大,除了版本的区别。但生成的静态库并不是预想的libinput.a,而是如下的三个库文件

        

         使用命令find . -name *.a |xargs nm -g --defined-only查看这几个静态库中定义的函数发现,和动态库中函数并不一样。所以这个生成的库目前看来只能使用动态库是与通过apt安装的一样的,静态库的差别后续再做研究,有知道的大佬可以留言帮我分析下。

        生成的动态库链接到执行文件后效果是否相同还需要后续再验证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值