原寫:Flanker_D
現在開始把工作上,學習上遇到過的問題記下來,電腦遲早要歸還公司的,所以這裡作一個備份。
8月7號-8月14號 編譯問題
OS:Solaris(5.8)
DB:Oracle 9i(9.2.0.4)
IPE版本:10.2.0
編譯不能,發現默認是cc編譯器,而solaris上面的cc是要銀子的,所以嘗試用gcc編譯。改了半天makefile文件,被老大罵了,叫我找IT要一個cc裝上。裝好cc,接著編。
編譯時報錯,提示有一大堆Undefined Symbol。google了下這幾個symbol,發現是ORACLE庫裡面的。修改庫路徑,只剩下一個Undefined Symbol,google之,發現是缺少g++標准庫。跟老大交涉之後,終於同意我改用gcc代替cc編譯。
修改$SWPORT/bin/make文件:加上-lstdc++,用-pthreads替代-mt,將CC指向gcc,編譯順利通過!
打包出錯:運行/u/src/bin/mkdist,提示找不著dbg。將port.tst/setup文件內控制編譯debug版本的參數設為ON,編譯debug版本。編譯通過。
打包成功。
檢查iPE reversion號。結果出乎我的意料:跟當初checkout過來的版本不匹配!原來是我在之前做了update,將版本更新為最新版本了,faint!含著淚花重新checkout,順便查了下svn上的log和項目文檔,仔細一想不對頭啊,項目文檔裡不就是寫的 current reversion號麼?但是svn log上的current reversion號跟文檔上的不一樣啊?!問老大,老大查完log,說這個項目英國那邊已經有人做完了,你做別的去吧。
很好。我從上周4到這周4的所有努力,全白費了,這倒沒什麼。但我想起了K對我說的話:“sorry,我們不知道你的solaris版本是8,下周我休假,應該會有其他人做。你等老大們商量結果看要不要做吧。”於是我等來的結果是:改一下文件,7上能編的8上不會有什麼問題。
對,版本方面是沒問題,但是數據庫呢?編譯器呢?代碼本身呢?全有問題。
所犯錯誤:svn 的update是更新至當前最新版本,而不是本機iPE的版本。
省略若干抱怨,老實做人,踏實辦事,the power of focus.
附:
1)當sunos環境下使用gcc編譯的時候,需將option -mt 換為 -pthreads
2)UNIX環境下2個IPE打包腳本:mkdist,mkinstal
3)$SWPORT/port.tst/setup----->SWDEBUG(當OS為Solaris的時候,需要用DEBUG版本來編PRO,所以需要將此變量至為ON)
----->CC=gcc
4)編譯生成路徑 $SWPORT/eng/bin/rel
$SWPORT/eng/bin/dbg
5)公司ORACLE庫文件裡面的9i即為9.2.0.4