何謂尷尬呢?
aix 5l
上本身有編譯器
-visual age c/c++
,但是不知怎麼的,老連裝上的
visual age
有問題,什麼問題呢?就是不能編譯程式,老是提示你編譯錯誤。
為此我跟嚴明作了乙個試驗,編譯一段**,用普通使用者
oracle
不能編譯過去,但是用
oracle
切換成root
使用者就能編譯過去,而且必須是切換成的
root
,不能是直接登入的
root
,我猜想可能是環境變數設定問題,嚴明說時原始檔的問題,他說按照
ansi
標準,原始檔的函式中必須把變數宣告放在最前面,他改了程式,果然能編譯,不過也必須要在
root
下編譯。最要命的事,
xlc只能編譯
c程式,不能編譯
c++,它說什麼證書之類的東西沒有被安裝。不管怎麼樣,
xlc是乙個收費軟體,我連想重新編譯一下都不成,而且這些東西必須要
ibm的相關證書才成,只有
ibm才知道這是為什麼吧。
還有另外一方面,據網上傳說,
xlc並沒有完全遵從
ansi c++
規範,它的
std c++
類庫與ansi
規定的std c++
類庫也不一樣,這意味著我們用
stl庫寫的程式可能面臨很大的改動,由於我們寫的程式呼叫的都是標準的
stl庫。
因此,我還是投入了
gnu的
gcc/g++
懷抱,我從網上
down
了gcc 3.4.4
的source
檔案,打算在
aix 5.3
系統上編譯安裝。誰知道錯誤百出,才知道
aix系統支援開源**不是特別的好。
第乙個錯誤,
aix上的
make
程式不同於
gnu的
make
程式,gcc
的makefile
是用gnu
的make
程式來執行的,所以我先裝了乙個
gnu的
make
程式。
第二次錯誤是因為找不到
xlc編譯器或者它沒有正常執行,解決辦法是老辦法——
oracle
使用者登入進去切成
root
,再開始安裝,ok!
第三次錯誤是資源超出限制,這裡要說一下,
aix對全部使用者使用系統資源是有限制的,就算你是萬能的
root
也是一樣,因此我更該了一些資源限額,重新引導了一下系統,也搞定了這個錯誤。
第四個錯誤就更奇怪了,是在
stage 3
的時候出的,說檔案比較,兩個階段產生的檔案不一樣,結果就放棄了。我在網上查詢這個錯誤的解決方案,杳無音信。最後,見到一根救命稻草,它說,別管這個錯誤,
gcc其實已經編譯完成了……
看一下
gcc –v
,果然可以用了。但是,但是……居然還要我安裝
libstdc++
之類的庫,而這些庫的安裝又很耗時間,都不是能一次安裝上的。
看來只有選擇
ibm提供的
took kit
裡面的gcc rpm
安裝包了,由於是為
aix 5.3
所定製的,所以安裝沒有問題,安裝通過,現在
gcc/g++
都能正常使用了。
gnu
軟體給我提供的乙個很好的思路就是,它的安裝方式,一般
gnu源**包都要在源**目錄建乙個目標目錄,在目標目錄下面執行源**目錄下面的
configure
指令碼,執行這個指令碼會在當前的目標目錄下生成乙個
makefile
檔案,執行
make bootstrap
,make install
就能將源**編譯成可執行程式並且安裝到系統中去。
為此我編了乙個指令碼,名字叫
configure
,放在我編寫的程式源檔案目錄下,在源檔案目錄下建立乙個
out目錄,進入
out目錄,執行
../configure
,自動在當前目錄下生成
makefile
檔案,生成的再執行
make
就可以進行編譯程式了。
話說回來,為什麼叫尷尬的
gcc,因為
gcc裝上之後,能編譯
c/c++
源程式,可就是編譯不了
aix下的
occi
,提示內容先是找不到
-lirc
;我將這個選項去除了再編,提示
crt64
位庫不能用;刪了再編,提示無法找到
libocci.a
靜態連線庫或者它不適乙個合法的
coff
檔案;我把它刪了,提示
occi.h
的標頭檔案語法錯誤,這下實在無可奈何了,因為那個靜態連線庫
libocci.a
是必須的。
我遇到的麻煩是
oracle 10g for aix
裝在aix5l
系統上,裝出來的
libocci.a
大小為0
,就是說
libocci.a
不能正常鏈結。察看
oracle
的安裝日誌,我算服了
oracle
了,它居然用
xlc來連線
libocci.a
,而前面已經說過,
xlc不能編譯
c++程式。
因此問題又回到了
xlc上來了,由於它不能編譯
c++程式,致使
oracle
在安裝的時候不能正常地連線
libocci.a
,所以使用
occi
的程式在呼叫這個靜態連線庫的時候,顯示檔案大小為
0……嗚乎哉,難道
oracle
安裝的時候不會根據系統環境自行選定
gcc編譯器麼?還是這個版本的
oracle
只能用xlc
鏈結?這實在是
gcc的尷尬。
因為無法搞定
xlc,所以也無法搞定
occi
,於是我要殺死
aix,在
powerpc
的基礎上搭建
linux
系統。這下
oracle
在編譯的時候總該採用
gcc來鏈結
occi
了吧!
E引數在gcc上的好處
gcc的引數有很多,這裡說乙個很重要的引數 e。如果我們只是想把原始檔預處理一下,e就派上用場了。它能幹什麼?1 把使用者定義的所有的預定義 define展開。舉個例子,如果使用者有以下 define max a,b a b a b int c max a,b 經過gcc預處理後,預定義都將展開成如...
索尼尷尬 PS5商標在印度遭搶註 被迫延期上市
索尼已經正式發布了ps5遊戲主機,定於11月12日開賣,無光碟機版起步價399美元,在部分ftgjf ny市場已經開啟預購。然而在印度市場,卻出現了程式設計客棧一件尷尬事情,ps5商標至程式設計客棧今未到索尼手中。外媒報道稱,印度德里一位名叫hitesh aswani民眾早在2019年10月29日就...
在H80安裝AIX5L 5 3導致E443故障
一台h80 p660 7026 6h1 之前執行aix 5.1,客戶要求重新安裝aix5.3後裝oracle和websphere。但是之前不知道h80不支援aix 5.3,於是導致讀安裝介質後伺服器掛起 可能是介質裡的資訊和微碼有衝突 led 為e443,手動重啟,按reset,斷電再加電後再重啟都...