私は次のようになりますいくつかのコードがあります:バイナリに接続されているすべての共有ライブラリを列挙しているそれは何やっているコードは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を行いました。私が探しているはずの別の場所がありますか?これらの定義はどこにありますか?
良い機能は、AIX4.3のAIX5.2とAIX5.1の定義では機能が除外されて隠れてしまったためです。しばらくしていたが、あなたは最後にいた。 – ojblass