【问题标题】:How to create shared library with gcc in hp-ux?如何在 hp-ux 中使用 gcc 创建共享库?
【发布时间】:2015-05-11 11:32:40
【问题描述】:

我尝试在 hp-ux 上使用 gcc 编译器创建一个共享库。我使用这些命令:

  1. gcc -Wall -fPIC -std=gnu99 -c *.c
  2. gcc -shared -Wl -o my_library.so *.o

一切编译都没有警告或错误,但是当我尝试使用该库时,我得到一个错误:

错误:扩展加载失败:操作系统错误:-1('path_to_lib' 不是有效的加载模块:错误的幻数)。 错误:无法加载扩展:(path_to_lib)。
错误:扩展加载失败:操作系统错误:-1('path_to_lib' 不是有效的加载模块:错误的幻数)

你知道这个错误到底是什么意思吗?如何解决?

已编辑: 我在 SAS 程序中使用我的共享库,如下所示:

proc proto package =work.myfuncs.tests;
   link "/home/my_library.so";

   int test(int x);
run;

【问题讨论】:

  • 您如何尝试使用该库
  • 我在 SAS 软件中使用它。我不知道是否值得一提使用细节,因为它完全是其他技术,在LINUX环境下也一切正常。我想,由于这个错误'Bad magic number',我必须使用更多的编译时参数。
  • 如果同样的事情在 Linux 上运行,那么它肯定是您的 SAS 软件上的链接问题。请验证您的库是否在编译过程中实际链接。
  • @Dayalrai 您能否提供更多详细信息?
  • 能否向我们详细介绍您如何尝试使用该库、如何链接它等等?

标签: c++ c gcc sas hp-ux


【解决方案1】:

我终于解决了我的问题。我必须使用 gcc 选项 -mlp64 将库创建为 64 位库,因为 SAS 软件是 64 位的。但是,我仍然不知道为什么proc proto 在 LINUX 上可以正常工作,因为那里的 SAS 软件也是 64b。也许这也是在这两种环境中使用不同 gcc 安装的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2016-08-20
    • 2013-07-04
    相关资源
    最近更新 更多