linux下 opendiameter的编译

远没有在windows下来的那么容易。。。。后来才意识到windows下的ACE5.8实际上很多模块都没有更新,和opendiameter(两年多前的项目)正好能匹配,当然也需要一定的修改,只是多少可以容忍。linux下的ACE5.8, mutex模块作了较大的修改,(这些修改似乎没有集成到windows版本上),而整个opendiameter项目对工具版本的依赖实在太重,如果想使用ACE5.8的linux版本,可能需要对opendiameter作很大的修改。(开源项目在模块整合上有很多类似的需要解决的问题)

但是换用ACE5.5.10,在debian 下依然编译不过,有些模块使用C++标准io库,有些模块又不使用,在更新了gnu工具的debian系统上configure的时候总是得出不使用iostream的结论(这个问题在后期的版本中解决了)。尝试了一下5.5.8版本,依然有这个问题。(http://www.freesoftwaremagazine.com/community_posts/my_opendiameter_experience_part_i_build_and_installation 上有一篇文章说是使用5.5版本的经过小的修改就可以编译通过,其他5.5.x的以及更高版本,要么ACE自身编译不过,要么后面的open diameter编译不过)。尝试使用选项--enable-stdcpplib,似乎并不是很起作用;编译的时候总是报cout,cin等不在当前名字空间内...这个问题本身很好解决,只要加入#include <iostream> using namespace std;即可,但是出现这个错误的文件很多,一个一个的修改实属下策...后来跟踪了一下configure的过程,原来configure生成的config.h文件是放在$(BUILD_DIR)/ace下的,而不是$(ACE_ROOT)/ace下,之前一直在找config.h,还曾经把$(ACE_ROOT)/ace/config.h.in文件改为config.h,结果编译产生了一大堆的问题。(编译的时候config.h会先在$ACE_ROOT/ace目录下找,其实ACE_ROOT的定义不应该定义为源码的目录,这个时候才体会到这个问题)。找到了真正被使用的config.h,那么上面那个关于iostream的问题就容易解决了,只要把里面的#define ACE_LACKS_IOSTREAM_TOTALLY 1改为 #undef ACE_LACKS_IOSTREAM_TOTALLY即可!!(可怜我为了这个问题,ACE编了多了版本,有花了好几个小时重新安装了最新的GNU工具...). 另外还会出现一个SSL问题的问题,就是configure的结果中没有把-lssl -lcrypto放入makefile里面,由于对configure的过程实在不熟系,所以就直接改makefile乐。

折腾了好几天终于编好了ACE5.5.10/8, 开始编译opendiameter-1.0.7-i又在configure的出了问题,一时恼怒就没有仔细想就直接在所有需要修改的makefile里增加了-lssl -lcrypto -lpthread,编译中还出现了关于库的依赖问题(很显然opendiameter依赖于ACE5.5.x x<8).

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值