AIX中的共享对象加载?

时间:2016-01-08 09:55:59

标签: c shared-libraries aix dbx

我有一个C程序hello.c。我创建了一个共享对象hello.so。

hello.c和hello.so分别在目录/u/grv/program/hello.c/u/grv/objects/hello.so中

LIBPATH设置为/ u / grv / objects:$ LIBPATH

当我使用dbx调试代码时..dbx要求我从两个列表中选择...

在LIBPATH的所有目录中只有一个“hello.so”文件。那么来自哪个“so”文件?

这是dbx session的屏幕截图:

(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 ..这意味着它没有加载..这就是为什么它要求我选择......还是有其他原因..?

如何加载共享对象以便在genkld列表中显示?

1 个答案:

答案 0 :(得分:0)

很明显,库glink64还包含一个名为hello的入口点。

您可以尝试将函数名称从hello更改为更独特的名称,然后让您的应用程序调用此新的唯一函数名称

我不熟悉genkld实用程序,因此无法帮助您