海思平台编译glib库

因为需要在海思平台上开发蓝牙 功能,在编译bluez的时候,bluez依赖glib,这里花了三天时间才终于才成功编译,所以在这里做一个编译glib的总结。

平台:Hi3559V200

编译工具:arm-himix100-linux-gcc

 如图,glib依赖Zlib、libffi和gettext,编译glib前需要先编译三个依赖程序。

上图是我使用的glib及其依赖库版本,如果版本不匹配,有可能导致编译失败;编译前先将所有依赖程序源码以及glib源码下载好,在同目录下创建_install存放头文件和库文件,以下为具体编译流程。

Zlib编译:

./configure  -prefix=$PWD/../_install
make
make install

Zlib编译要注意,如果是嵌入式环境,需要修改编译工具为对应的交叉编译工具链,使用configure将Makefile生成后,打开Makefile,将其中的gcc、g++等修改为平台使用的交叉编译工具,如gcc改为arm-himix100-linux-gcc等,有ar命令等也要修改。

libffi编译:

源码下载路径:https://github.com/libffi/libffi/tree/v3.0.13

./configure --host=arm-himix100-linux --prefix=$PWD/../_install
make
make install

gettext编译:

源码下载路径:https://ftp.gnu.org/pub/gnu/gettext/ 

./configure --prefix=$PWD/../_install --host=arm-himix100-linux CC=arm-himix100-linux-gcc CXX=arm-himix100-linux-g++ CFLAGS="-fPIC"
make
make install

glib编译:

源码下载路径:https://download.gnome.org/sources/glib/2.40/

./configure --host=arm-himix100-linux --prefix=$PWD/../_install CPPFLAGS=-I$PWD/../_install/include LDFLAGS=-L$PWD/../_install/lib PKG_CONFIG_PATH=$PWD/../_install/lib/pkgconfig glib_cv_stack_grows=no glib_cv_uscore=yes ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes
make
make install

glib编译后即可成功,可在_install中查看编译的库和头文件等;在编译glib的时候一直有一个gettext的报错,这个报错导致我编译glib花了三天时间,如下:

 从报错来看,是找不到gettext工具或者需要连接交叉编译得到gettext库,在网上查询的时候,很多说在ubuntu上使用apt-get install gettext即可,我安装后还是有这个错误,然后也有说不能使用apt-get 来安装,需要下载gettext源码,然后在手动安装的,但是都不行,后面我测试的时候,才发现,如果下载了源码,交叉编译成功后,需要在编译glib的时候,将gettext的头文件和库文件路径都需要指定才行,发现自己还真是经验太少,平时当一个摸鱼十级的程序员真是太合格了。

gettext编译的报错修改好以后,编译的时候又遇到了

gdate.c:2497:7: error: format not a string literal, format string not checked [-Werror=format-nonliteral]报错,查询后发现是gcc6以后的版本编译检查严格了,将Warning警告改为直接报错,我的修改方式是将gdate.c文件中在报错函数前添加:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"

在报错函数后添加:

#pragma GCC diagnostic pop

修改后glib编译即可成功。

其实如果感觉修改c文件比较麻烦,可以直接修改Makefile,将format-nonliteral的报错屏蔽掉,同样也能解决。

或者参考大神详细分享文章:https://blog.csdn.net/wwwyue1985/article/details/113359706?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163869061416780357215712%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163869061416780357215712&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-2-113359706.first_rank_v2_pc_rank_v29&utm_term=gdate.c%3A2497%3A7%3A+error%3A+format+not+a+string+literal%2C+format+string+not+checked&spm=1018.2226.3001.4187

 以上就是本人编译glib中编译和遇到的问题总结。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值