0

我创建了一个 C 程序的共享库。-Xlinker -G我使用选项创建了 .so 文件。该库将从 Oracle Goldengate(userexit) 调用。但是当 oracle 尝试加载模块时,它异常终止并显示“系统错误:执行格式错误”。有什么方法可以让我更多地调查加载库时出了什么问题?

4

2 回答 2

3

检查file libyourname.so...的输出

根据我的经验,您的库可能是 32 位的,而他们的库可能是 64 位的,反之亦然。

32 位模块将显示:

   libname.so: executable (RISC System/6000) or object module not stripped

64 位模块将显示:

   libname.so: 64-bit XCOFF executable or object module not stripped
于 2014-07-09T17:14:23.230 回答
1

当您在可能与您希望在其上运行它的操作系统版本不同的服务器上编译应用程序时,您可能会看到以下错误:

无法加载....:执行格式错误

以下是一些需要检查的事项:

1)确保您的库处于正确的版本和级别(尤其是 libc):

转储 -H /path/to/executable

2) 如果您在编译服务器上配置了异步 I/O,请在新服务器上也启用它:

lsattr -El aio0

如果启用,请检查以确保自动配置设置为“可用”。

如果您需要启用 aio:

mkdev -l aio0

chdev -l aio0 -a 自动配置='可用'

注意:Oracle 可执行文件需要异步 I/O 才能正常工作。例子

转储 -H /path/to/executable; mkdev -l aio0; chdev -l aio0 -a 自动配置='可用'

另外,您可以参考以下链接: http ://www-01.ibm.com/support/docview.wss?uid=swg21253974

于 2014-07-09T17:25:51.050 回答