查libevent不能编译出动态库问题

博主从事嵌入式Linux上的软件开发,其中用到了很多库。博主发现这些库都是静态链接的。如果有多个程序都要用到这个库,而且这个库又比较大的时候。这将是一个莫大的空间浪费。

博主对比了一下本地编译与交叉编译下的日志输出,发现有以下比较可疑的信息:

上面左边76,77行,不能支持shared libraries。

打开 ./configure,找到对应的输出语句:

能否支持,是由 can_build_shared 这个变量决定的。

can_build_shared 在这里有修改:

去 confilg.log 中搜 11262 行的输出结果:

结果可以看出 dynamic_linker 的值是 “GNU/Linux ld.so”,不是 "no",所以不是这里影响了 can_build_shared 变量。

查得另一处影响的变量:

去 config.log 查得 ld_shlibs 的值为 no:

那为什么 ./configure 认为 rsdk-linux-gcc 不支持 shared library 呢?它的判断标准是什么?

博主翻了好几页,这 ./configure 真不是人看的,没有对缩进,而且好深的case嵌套。哎~,脑空量溢出了。

大概可以分析出跟 host   有关系,./configue 在分析是什么系统,根据系统来判断 ld_shlibs 的值。

如果是这样,很可能是我在 Makefile 中:

./configure --host=mips-linux 所致?将 "mips-linux" 改成 "linux" 再试试。

通过打调试信息,得知是在这里设置的 ld_shlibs 为 no 的:

与这个case相关的代码好大,好难看出到底是什么条件了。查得与 host_os 变量相关。

在调试信息中打印 host_os 变量的值,为 "elf" 。为什么是这个?而 host_os 在这里赋值:

从 config.log 中得知 ac_cv_host = mips-unkonwn-elf 。

ac_cv_host 来源:

这个由 config.sub 与 host_alias 所得。而 host_alias 来自于:

可以从 L984 得知,host_alias 来自于我们 ./configure 时传的 --host=mips 所得。

理一下思路:

我们转入了一个 --host=mips-linux,configure 执行 sh config.sub mips-linux,返回的结果是 "mips-unkonwn-elf",host_os 从中提取出 "elf",然后就不对了。 

那 --host=?? 得看 config.sub 如何转换。

转载于:https://my.oschina.net/hevakelcj/blog/675486

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值