У меня есть код, похожий на следующий:
#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) Оператор косвенного обращения не может быть применен куказатель на неполную структуру или объединение.
Я не могу найти, где shl_get определен в моем окне aix 5.3, а также не могу найти, где определен struct shl_descriptor.Я в тупике.Я даже безуспешно пытался вывести предварительно обработанный вывод с флагом -E на компилятор.Я сделал рекурсивный grep в / usr / include.Где-то еще я должен искать?Где эти определения?