vs2010編譯OVALInterpreter

win7編譯OVALInterpreter遇到的主要問題是編譯它所用到的第三方庫,首先是pcre,這個沒有遇到什麼問題,略過,其次是libgcrypt,這是一個GNU環境下的軟件包,在windows下編譯需要使用mingw,由於此前從未使用過,所以遇到了不少麻煩,

1,下載mingw,位於sourceforge上,只提供在線安裝包,網速差的時候一個接着一個的Download Error,於是找來離線完整安裝包

2,libgcrypt依賴libgpg-error,    於是下載了libgpg-error-1.10 和libgcrypt-1.5.0 (只這兩個版本編譯成功)

3,把libgpg-error複製到mingw 的home目錄,並進入該目錄,執行./autogen.sh,之後按照提示一步一步輸入指令

4,make 的時候停留在protomo:XXXXXXiso...utf8這一行,幾次重試都是同樣的結果,無法繼續,後來在google上多番查找,問題出在iconv.exe這個文件上,找到了兩個解決方法,patch文件和修改protomo文件,patch文件下回來之後不知道怎麼用,於是修改protomo文件,把 iconv的--silent參數改成-s,效果是一樣的,但是--silent將導致問題,這好像是一個已知的bug,

5,進入libgcrypt-1.5.0文件夾,運行./autogen.sh 之後 make && make install.libgcrypt的文檔上說的是./autogen.sh --build-w32指令,它的意思是在gnu環境下編譯win32平臺的目標文件,由於我是在win7下編譯,所以不需要該參數

6,make install 的時間相當漫長


libgcrypt編譯完之後是xerces,xerces的編譯沒什麼問題,編譯完這些庫之後,在OVALInterprete這設置 include目錄和lib目錄,對於xerces還需要在鏈接選器的常規項中設置附加庫目錄,和剛纔的lib一樣的路徑,在鏈接器的輸入選項中添加xerces生成的lib文件名。開始編譯,編譯的過程中沒有出現問題,但在鏈接的時候卻出現了43個錯誤,典型的鏈接錯誤提示:無法找到外部符號:“"__declspec(dllimport) public: static void __cdecl xerces::................”,但是xerces明明已經設置好了,在這裏糾結了好久,網上也沒發現什麼解決方法,該死的baidu 查不到有用信息,google又連接不正常,於是去玩了一會遊戲,等待google恢復正常。google之後發現問題可能出在字符集設置上,OVALInterprete和xerces都是未設置,都改成多字節之後重新編譯,問題依舊,在繼續查找,發現是wchar_t的問題,OVALInterprete項目將wchar_t視爲內置類型,而xerces沒有,都改成不視爲內置類型之後終於編譯成功。


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