2010-11-22 6 views
0

私は次のようになりますいくつかのコードがあります:バイナリに接続されているすべての共有ライブラリを列挙しているそれは何やっているコードはAIX 5.3ではコンパイルされますが、AIX 7.1ではコンパイルされません。これはshl_descriptorの構造体と何が関係していますか?

#include <stdio.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <sys/errno.h> 
#include <fcntl.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <errno.h> 
#include <stdarg.h> 
#include <sys/ldr.h> 

int main (int argc, char **argv) 
{ 
    int      liRC = 0; 
    struct shl_descriptor *lstModDesc; 
    int      liEach; 
    char      lsBaseName[513]; 
    char      *lsTheName; 

    for(liEach = 0; liRC == 0; liEach++) 
    { 
     liRC = shl_get(liEach, &lstModDesc); 
     if(liRC == 0) 
     { 
     strcpy(lsBaseName, lstModDesc->filename); 
     lsTheName = (char *)basename(lsBaseName); 
     /* do more stuff */ 
     } 
    } 
    return 0; 
} 

を。これは、AIX 5.3上で正常にコンパイルされますが、AIX 7.1上で私は、次に関するlstModDesc取得しています:

「modulename.c」、ライン2553.30:1506から285 (S)間接演算子をすることはできません にppliedを不完全な 構造体または共用体へのポインタ。

私のaix 5.3のボックスにshl_getが定義されている場所が見つかりません。また、shl_descriptorの構造体がどこに定義されているのかわかりません。私は困惑している。私も、前処理された出力を-Eフラグでコンパイラに出力してみました。私は/ usr/includeに再帰的なgrepを行いました。私が探しているはずの別の場所がありますか?これらの定義はどこにありますか?

答えて

4

コードの一部がAIX 5.3のコンパイルに含まれていることを確認してください。私は単に 'サイト:ibm.com shl_descriptor' でGoogleの-でかいを行ってい一つの項目を正確あります:

WASでそれはHP-UX上の問題を指している(WebSphereは、アプリケーション・サーバー)。 <dl.h>(ダイナミックローダー)を使用し、shl_descriptorshl_gethandle()shl_load()を示すサンプルコードがあります。

AIXで何かのヒットが完全になく、HP-UXプラットフォームが存在する場合、解決するには少し異なる問題があります。質問です:

  • はなぜAIX 7.1上でそれを除くshl_descriptorを使用する部分を除くとないAIX 5.3上の条件付きコンパイルです。 #ifdef行でそのコードを囲んでいる条件を調べ、AIX 5.3でHP専用コンパイルをトリガーするために使用されているものを見てください。
+0

良い機能は、AIX4.3のAIX5.2とAIX5.1の定義では機能が除外されて隠れてしまったためです。しばらくしていたが、あなたは最後にいた。 – ojblass

関連する問題