gpt4 book ai didi

c++ - 在 solaris 上创建和使用动态共享库

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:59 24 4
gpt4 key购买 nike

我正在阅读在 solaris sparc 服务器上创建和使用动态共享库的过程。以下是我的文件:

> ls -lrt
total 8
-rw-rw-r-- 1 nobody nobody 848 Nov 22 14:45 badmemlib.hh
-rw-rw-r-- 1 nobody nobody 1924 Nov 22 14:46 badmemlib.cc
-rw-rw-r-- 1 nobody nobody 330 Nov 22 14:49 my_prog.cc
>

在上面的文件中,badmemlib.hh 是头文件,我使用它创建一个共享库,并按照 this 中提到的内容使用以下命令链接。

> CC -G -o libbad.so -h libbad.so -Kpic badmemlib.cc

在我运行上面的命令后,我有以下这些文件:

> ls -lrt
total 26
-rw-rw-r-- 1 nobody nobody 848 Nov 22 14:45 badmemlib.hh
-rw-rw-r-- 1 nobody nobody 1924 Nov 22 14:46 badmemlib.cc
-rw-rw-r-- 1 nobody nobody 330 Nov 22 14:49 my_prog.cc
-rwxrwxr-x 1 nobody nobody 8284 Nov 22 15:11 libbad.so*
>

如您所见,libbad.so 的构建没有任何错误。现在我的 main 在文件 my_prog.cc 中我正在编译文件 my_prog.cc,如下所示 this :并且没有错误。二进制 a.out 已构建。

> CC -L. -lbad my_prog.cc
> ls -lrt
total 184
-rw-rw-r-- 1 nobody nobody 848 Nov 22 14:45 badmemlib.hh
-rw-rw-r-- 1 nobody nobody 1924 Nov 22 14:46 badmemlib.cc
-rw-rw-r-- 1 nobody nobody 330 Nov 22 14:49 my_prog.cc
-rwxrwxr-x 1 nobody nobody 8284 Nov 22 15:11 libbad.so*
-rwxrwxr-x 1 nobody nobody 80224 Nov 22 15:14 a.out*
>

现在如果我运行 a.out 那么我面临的错误是:

> ./a.out
ld.so.1: a.out: fatal: libbad.so: open failed: No such file or directory
Killed

它提到找不到库,但正如您在上面看到的,该库位于同一目录中!

谁能帮帮我!

my_prog.cc.it 的内容实际上生成了一个 sigsegv 并且 badmemlib 文件有一个信号处理程序。

#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include "badmemlib.hh"
#ifdef SOLARIS /* needed with at least Solaris 8 */
#include <siginfo.h>
#endif

int main(){
char *where=(char *)0x123;

printf( "About to write to %p\n", where);
strcpy(where,"vijay");

return(0);
}

最佳答案

您需要告诉您的应用程序从当前目录中查找 .so 文件:

CC -L. -lbad my_prog.cc -R <your current directory>

http://docs.oracle.com/cd/E18659_01/html/821-1383/bkana.html#bkawi

关于c++ - 在 solaris 上创建和使用动态共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com