centos7 编译bluez ARM版本及undefined reference to `g_thread_new‘

作者在编译glib库后遇到g_thread_new函数未找到的问题,通过检查glib源码和尝试不同版本,发现是版本过低导致。升级到2.40.0版本后,重新编译并解决了-Werror=format=2的错误,最终成功编译安装了glib和bluez。

        在我辛辛苦苦编译成功 glib 库后(看我上一篇文章 centos7 glib2.0 arm版本的编译),以为可以顺利编译我的 bluez ARM 版本,结果出现了最后一个错误(其中一个是私有库里的),如:

就是这个 g_thread_new 没有找到实现,然后在网上搜了半天,都说是 glib 库里的实现,但我在昨天下载的glib代码里都没有发现:

甚至在已经生成的glib目录下,也找不到相关的符号:

最后想到是不是还是 glib 版本不对,可能 glib 版本过低了?于是下载了好几个版本的 glib,最后皇天不付有心人啊,真的是版本过低了,真想干死这个 glib。

我下载的是2.40.0 版本的:wget http://ftp.acc.umu.se/pub/GNOME/sources/glib/2.40/glib-2.40.0.tar.xz。简直要崩溃啊,那我编译的 glib-2.30.0 版本不是白白浪费我的时间了吗?此处有很多草泥马路过!!!!!

然后跟前一篇文章一样,从头开始编译,好在之前都踩过好多坑,这次按部就班操作:

./configure --prefix=/usr/local/glib --host=arm-himix200-linux --cache-file=arm-himix200-linux.cache CC="arm-himix200-linux-gcc" LIBFFI_CFLAGS=/usr/local/lib/libffi-3.0.13/include/

arm-himix200-linux.cache 文件里同样地添加了这些:

ac_cv_func_qsort_r=no
glib_cv_stack_grows=no
glic_cv_uscore=no
glib_cv_uscore=no
ac_cv_func_posix_getpwuid_r=no
ac_cv_func_posix_getgrgid_r=no

遇到了新的错误

这个错误直接看这篇文章:gdate error: format not a string literal -Werror=format-nonliteral 错误详解_龙赤子的博客-优快云博客

解释得很到位,这里我就直接修改Makefile 了,把那个-Werror=format=2编译选项删掉。 

踩过这么坑,这次比上次果然顺利了好多了,最后 make install 后,终于找到 g_thread_new 的实现了:

历尽千辛万苦,最后编译 bluez 也终于成功了

### OSSEC 编译时遇到 `undefined reference to OPENSSL_init_ssl` 错误解决方案 当尝试编译OSSEC并遇到`undefined reference to OPENSSL_init_ssl`错误时,这通常意味着OpenSSL库未被正确安装或者链接器无法找到所需的OpenSSL函数。为了修复这个问题,可以采取以下措施: #### 安装 OpenSSL 开发包 确保已安装最新的OpenSSL开发包。对于基于Red Hat的企业Linux发行版(如CentOS),可以通过yum来完成此操作[^4]: ```bash yum install openssl-devel ``` #### 配置环境变量 有时即使已经安装了必要的库文件,在编译过程中仍然会报错。此时应该确认LD_LIBRARY_PATH包含了openssl的路径以及LDFLAGS设置了正确的标志位以便于链接编辑期间能够定位到这些库。 #### 修改 Makefile 或配置脚本中的选项 如果以上方法未能解决问题,则可能是因为Makefile或configure脚本里缺少对新版本OpenSSL的支持。检查是否有任何特定于OpenSSL设置的地方,并按照官方文档更新相应的参数以适应当前使用的OpenSSL版本。 #### 使用兼容模式构建应用程序 某些情况下,较新的OpenSSL API可能会引入不向后兼容的变化。在这种情形下,考虑使用旧API名称进行编译可能是有效的办法之一。可以在编译命令前加上宏定义来启用这种行为: ```c #define OPENSSL_API_COMPAT 0x10100000L ``` 也可以通过CFLAGS传递给gcc: ```bash export CFLAGS="-DOPENSSL_API_COMPAT=0x10100000L" ``` #### 更新 OSSEC 版本 考虑到安全性和稳定性因素,建议始终运行最新稳定发布的软件版本。因此,查看是否存在更高版本的OSSEC也很重要,因为开发者很可能已经在其中解决了此类依赖关系问题[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值