HP-UX动态连接库的查找路径问题

发布于 2022-08-22 07:11:31 字数 1615 浏览 9 评论 2

我使用的系统是HP-UX11.23,使用的编译工具是aCC。编译环境以及编译出的程序均为64bit。

我写了一个小例子,两个文件分别是say.c和test.c。
say.c:
     1  #include <stdio.h>
     2  void say()
     3  {
     4          printf("say!n");
     5  }

test.c:
     1  void say();
     2  int main()
     3  {
     4          say();
     5          return 0;
     6  }

Makefile:
     1  a.out:test.c say.so
     2          aCC +DD64 say.so test.c
     3  say.so:say.o
     4          aCC +DD64 -b say.o -o say.so
     5  say.o : say.c
     6          aCC +DD64 +z -c say.c
     7  clean :
     8          rm *.out *.o *.so

执行make以后,生成可执行文件a.out。如果在当前目录下运行,没有问题。如果到别的目录下运行a.out,就会报告说找不到say.so文件。
我设置了LD_LIBRARY_PATH)=say.so所在的文件夹后,仍然不起作用。

已经调查了整整两天了,不知道是何原因,请指点一下吧。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷情 2022-08-28 09:40:33

a.out的属性如下:
$ chatr a.out
a.out:
         64-bit ELF executable
         shared library dynamic path search:
             LD_LIBRARY_PATH    enabled  first
             SHLIB_PATH         enabled  second
             embedded path      enabled  third  /opt/aCC/lib/hpux64:/usr/lib/hpux64:/opt/langtools/lib/hpux64
         shared library list:
             ./say.so
             libstd_v2.so.1
             libCsup.so.1
             libm.so.1
             libunwind.so.1
             libc.so.1
             libdl.so.1

动态共享库的搜索路径以及优先顺序都说的很明白,环境变量LD_LIBRARY_PATH我也设置了,就是不起作用。

夜夜流光相皎洁 2022-08-22 19:32:53

查看a.out的依赖关系,如下所示:
$ ldd -s a.out

  find library=./say.so; required by a.out
        ./say.so =>     ./say.so
指向的是当前目录下的say.so。无论在哪个目录下运行a.out,必须在当前目录下存在say.so才行,否则就会报告找不到say.so。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文