glib wpa_supplicant Unix上库编译错误解决与总结

本文总结了在Unix系统中交叉编译glib和wpa_supplicant库时遇到的问题及解决方案,包括指定CC为交叉编译器,设置--prefix,处理依赖库路径,使用pkg-config,以及解决特定编译错误如libffi、zlib、openssl、glib-compile-schemas等。这些问题的解决对于成功编译和避免系统破坏至关重要。
摘要由CSDN通过智能技术生成
编译Linux下的库是一件痛苦的事情,这里主要阐述glib和wpa_supplicant库的编译,因各自的依赖关系,另外一些库要事先编译。glib依赖libffi和zlib,而wpa_supplicant依赖dbus和openssl。

总结下交叉编译几个常见的逻辑:
1. 指定CC为交叉编译器
2. 指定--prefix,如果不指定,会将宿主机PC上相应的库给覆盖了,如果是系统关键的库文件,那就会造成系统启动失败。解决办法只有一个一个找到被覆盖的文件,再从一台好的PC机上拷贝回来。注意这里要找到被修改的文件不是那么容易,也许只有看文件的修改日期,另要找到一台相同系统的机器也不是那么简单的。
3. 编译依赖其他库的package的时候(这里就是glib,它依赖libffi和zlib),要将依赖库的lib和include路径指定清楚,让编译器能够找到这些文件,如果头文件include找不到的话,那就会编译出错,报not found file or directory之类的错误;如果是库文件lib找不到的话,那就会在ld链接的时候出错,报undefined function之类的错误。
4. pkg-config和PKG_CONFIG_PATH的使用,网上已经有很详细的介绍了,这里不再细数。只是说明尽量用pkgconfig方式来指定依赖库和头文件的路径,在*.pc文件里面已经有很详细的定义,就不用在configure或者make的时候指定一串串长长的CFLAGS,LDFLAGS,-I,-L。
5. 在定义CFLAGS或者LDFLAGS的时候,尽量不要指定PC系统的目录,像/usr/lib,/usr/include之类。因为系统一般都是x86的库,如果被交叉编译的库链接的话会报错。


编译历程:
1. 需定义LIBFFI_LIBS, LIBFFI_CFLAGS, ZLIB_LIBS和ZLIB_CFLAGS这几个宏,否则会出现一下的错误。

make[4]: Entering directory `/home/joe/Downloads/glib-2.3
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值