c++ - 如何在 hp-ux 中使用 gcc 创建共享库?

标签 c++ c gcc sas hp-ux

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

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

一切都在没有警告或错误的情况下编译,但是当我尝试使用该库时,我收到错误:

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

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

已编辑: 我在 SAS 程序中使用我的共享库是这样的:

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

   int test(int x);
run;

最佳答案

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

关于c++ - 如何在 hp-ux 中使用 gcc 创建共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30166563/

相关文章:

c++ - 有没有办法将纯抽象类的所有子类按值传递给 C++ 中的函数?

c++ - 使用模板是否节省内存

c - switch语句的效率

c - 二叉搜索树不添加元素

c++ - 启用 istream operator>> 接受两个或三个值

c++ - 物理子弹 - 有任何 'Ghost' body 吗?

c - 动态分配和访问指针数组?

linux - 如何更改ld.so中的默认路径

python - 在 Cython 中使用/编译 C++

gcc - 警告 : cast from pointer to integer of different size