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下面了,不用那麼麻煩了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章