Eclipse中Resiprocate的编译问题解决方案

系统环境:RHEL5.4

开发环境:Eclipse C++

VS下的开发已经完成,现在的问题是将项目从Windows下迁移到Linux,从VS下迁移到Eclipse下出现了不少的编译问题,解决方案如下:

1)编译安装resiprocate,传统的linux configure make makeinstall,不再多说。

2)在Eclipse建议新的C++工程,单纯的将代码copy过来,编译,会出现N多的 undefined reference to XXXXX,不用说,肯定是相应的库没有引用,很多人不知道怎么在Eclipse下添加库引用,这里简单说明一下,区别Java开发时的Build Configure方式,这里是选择项目单击右键,选择Properties,选择里面的C/C++ Build->Setting,怎么样?里面的选项是不是基本上和VS一样?熟悉VS下开发的人后面的操作就很清楚了,不再多说,切入正题。

3)resiprocate在linux下编译完成后,所在目录下的contrib/areas      reutil      resip/dum      resip/stack   这四个目录下,会有相应的object.linux的编译目录,里面有静态库文件(.a),所以要做的是将这四个库引入,区别VS下的Project Reference,Linux下的更简单直接,引入库就可以了,这里需要注意的是引用方式,在GCC C++ Linker里面的Libraries里面引用是没有用的,会报not found XXXX库文件,需要在Miscellaneous下的Other Objects中引入,才会有效。

好了,引用完成,编译试试吧.....结果又是N多的not found XXXX,不过这次少了些,而且主要集中在areas_XXX,BIO_ctrl, BIO_free之类的,说明还是少库,那就接着加.....这些库的引用问题主要是发生在areas库中引用了openssl的库造成的,解决方案如下:

1)首先确定openssl有没有安装,没有的话先安装上。

2)安装成功后,会在相应的目标目录有  libssl.a    libcrypto.a   这两个文件,同样是.a文件,再像上面那么引用不起作用,需要在eclipse的工程的debug或release目录下找到objects.mk文件,在里面的LIBS中,添加 -lrt -ldl /XXX/XXX/libssl.a /XXX/XXX/libcrypto.a       

再编译看看,搞定。


虽然搞定,但总觉得解决的方式有些问题,后来知道了,在Linker的Libraries里面,直接把需要的库名添加进去就可以了,也不需要改文件,用其它的参数了,库名是libxxx去年lib之后的文件名,没有后缀。所以统计一下,所有的库引用都这样引用,包括那四个目录下的库,其实安装的里面也已经安装到了/usr/local/lib下面了,不用那么麻烦了。


你可能感兴趣的:(C,CPP,Linux)