2016-01-08 7 views
0

У меня есть программа c hello.c. Я создал общий объект hello.so.Загрузка общего объекта в AIX?

hello.c и hello.so находятся в каталоге /u/grv/program/hello.c /u/grv/objects/hello.so соответственно

LIBPATH устанавливается в/U/Grv/объектов: $ LIBPATH

, когда я использую DBX для отладки code..dbx просит меня выбрать из списка два так ..

Во всех каталогах LIBPATH есть только один файл «hello.so». .so откуда берется «такой» файл?

вот снимок экрана DBX сессии:

(dbx) stop on load "hello.so" 
[1] stop on load "hello.so" 
(dbx) c 
stop: loaded /u/grv/object/hello.so 
[1] stopped in uload at 0x9fffffff0002024 ($t1) 
0x9fffffff0002024 (uload+0x104) e8410028   ld r2,0x28(r1) 
(dbx) stop in hello 
1. hello.hello 
2. glink64.hello 
Select one or more of [1 - 2]: 

Дополнительная информация: genkld команда не не hello.so .. это означает, что его не loaded..is эту причину, почему он просит меня выбрать ... или есть какая-то другая причина ..?

Как загрузить общий объект, чтобы он отображался в списке genkld?

+0

Что вы на самом деле хотите достичь? Создавать общие объекты, которые запускают его самостоятельно? –

+0

Мне просто интересно, почему есть два таких ... но у меня есть только так. – Grv

+0

Правда, есть только один «hello.so», но есть два «привет» _symbol._ Также попробуйте следующее: 'info sh' (он работает в gdb, dunno о dbx). –

ответ

0

Очевидно, что библиотека glink64 также содержит точку входа hello.

Вы можете попробовать изменить имя функции от hello к чему-то более уникальное, то есть прикладную вызов этой новой уникальной функцией имя

Я не знаком с утилитой genkld поэтому не может помочь вам там