AIX 中的共享对象加载?
Shared object load in AIX?
我有一个 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 会话的屏幕截图:
(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 ..这意味着它没有加载..这是它要求我 select 的原因吗..或者还有其他原因..?
如何加载一个共享对象以便它显示在 genkld 列表中?
很明显,库 glink64
还包含一个名为 hello
的入口点。
您可以尝试将函数名称从 hello
更改为更独特的名称,然后让您的应用程序调用这个新的独特函数名称
我不熟悉 genkld
实用程序,因此无法在这方面为您提供帮助
我有一个 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 会话的屏幕截图:
(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 ..这意味着它没有加载..这是它要求我 select 的原因吗..或者还有其他原因..?
如何加载一个共享对象以便它显示在 genkld 列表中?
很明显,库 glink64
还包含一个名为 hello
的入口点。
您可以尝试将函数名称从 hello
更改为更独特的名称,然后让您的应用程序调用这个新的独特函数名称
我不熟悉 genkld
实用程序,因此无法在这方面为您提供帮助