C AIX中的共享对象加载?
我有一个C程序。我创建了一个共享对象hello.so hello.c和hello.so分别位于目录/u/grv/program/hello.c/u/grv/objects/hello.so中 LIBPATH设置为/u/grv/objects:$LIBPATH 当我使用dbx调试代码时,..dbx要求我从两个so的列表中进行选择 在LIBPATH的所有目录中只有一个“hello.so”文件。那么secound“so”文件来自哪里呢 以下是dbx会话的屏幕截图:C AIX中的共享对象加载?,c,shared-libraries,aix,dbx,C,Shared Libraries,Aix,Dbx,我有一个C程序。我创建了一个共享对象hello.so hello.c和hello.so分别位于目录/u/grv/program/hello.c/u/grv/objects/hello.so中 LIBPATH设置为/u/grv/objects:$LIBPATH 当我使用dbx调试代码时,..dbx要求我从两个so的列表中进行选择 在LIBPATH的所有目录中只有一个“hello.so”文件。那么secound“so”文件来自哪里呢 以下是dbx会话的屏幕截图: (dbx) stop on load
(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列表中?很明显,库
glink64
还包含一个名为hello
的入口点
您可以尝试将函数名从hello
更改为更独特的名称,然后让应用程序调用此新的独特函数名
我不熟悉
genkld
实用程序,因此无法在这方面帮助您您真正想要实现什么?创建一个运行它自己的共享对象?我只是好奇为什么有两个so..但我只有so..是的,只有一个“hello.so”,但有两个“hello”符号。也可以试试这个:infosh
(它在gdb中工作,不知道dbx)。