2014-07-09 10 views
0

我創建了一個C程序的共享庫。我使用-Xlinker -G選項創建了.so文件。這個庫將從Oracle Goldengate(userexit)中調用。但是當oracle試圖加載模塊時,它的異常結束說明「系統錯誤:exec格式錯誤」。 有沒有什麼方法可以調查更多關於加載庫時出錯的信息?如何調查有關某些.so文件給Sytem錯誤的更多信息:AIX中的exec格式錯誤

+1

'文件libyourname.so'的輸出是什麼?可能你的lib是64位的,他們的是32位的,反之亦然。 – JohnH

+0

輸出是:可執行文件(RISC System/6000)或目標模塊未被刪除。 Oracle Goldengate 12c版本,所以它的確是64位。我不知道我的 – n00b

+1

@JohnH:嘿,你的建議工作。轉出我的gcc編譯產生了一個32位庫。我編譯了一個64位版本,一切都開始正常工作。請張貼您的建議作爲答案,以便我可以標記問題解決:) – n00b

回答

2

檢查的file libyourname.so輸出...

以我的經驗,這也可能是您的lib是32位和他們的是64位的,反之亦然,等等。

一個32位模塊將顯示:

libname.so: executable (RISC System/6000) or object module not stripped 

64位模塊將顯示:

libname.so: 64-bit XCOFF executable or object module not stripped 
1

當編譯的服務器上的應用程序,它可以不是在完全相同的操作系統版本作爲您希望運行它的一個,您可能會看到以下錯誤:

無法加載....:執行格式錯誤

這裏有一些事情要檢查:

1)確保你的庫是在正確的版本和級別(尤其是libc中):

轉儲-H /路徑/到/可執行

2)如果你有異步I/O編譯服務器上配置,使其在新服務器上,以及:

lsattr來-El aio0

檢查,以確保自動配置是否啓用它設置爲「可用」。

如果您需要能夠AIO:

用mkdev -l aio0

的chdev -l aio0 -a自動配置= '可用'

注:Oracle可執行文件需要異步I/O的工作正常。 示例

dump -H/path/to/executable; mkdev -l aio0;使用chdev -l aio0 -a自動配置= '可用'

此外,你可以參考以下鏈接: http://www-01.ibm.com/support/docview.wss?uid=swg21253974

+0

我已經檢查了所有這一切,但不幸的是它沒有幫助。 :( – n00b

相關問題