Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在solaris上创建和使用动态共享库_C++_C_Shared Libraries_Solaris - Fatal编程技术网

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

C++ 在solaris上创建和使用动态共享库,c++,c,shared-libraries,solaris,C++,C,Shared Libraries,Solaris,我正在阅读在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

我正在阅读在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是头文件,我使用下面的命令创建一个共享库,如下链接中所述

运行上述命令后,我有以下文件:

> 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,如下所示: 没有错误,二进制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的内容。它实际上生成一个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);
}
#包括
#包括
#包括
#包括
#包括“badmemlib.hh”
#ifdef SOLARIS/*至少需要SOLARIS 8*/
#包括
#恩迪夫
int main(){
char*其中=(char*)0x123;
printf(“即将写入%p\n”,其中);
strcpy(其中,“vijay”);
返回(0);
}

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

CC -L. -lbad my_prog.cc -R <your current directory>
CC-L.-lbad my\u prog.CC-R

您也可以尝试设置
LD\u LIBRARY\u PATH
变量

你应该做:

export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:<full path where library is present>
export LD\u LIBRARY\u PATH=$LD\u LIBRARY\u PATH:

我想应该是-R和nor-rit的-R,我在答案中加入了CC文档链接
export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:<full path where library is present>