簡體   English   中英

在solaris上創建和使用動態共享庫

[英]creating and using a dynamic shared library on 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 14:49 my_prog.cc
> 

在上面的文件中,badmemlib.hh是頭文件,在鏈接中提到的內容之后,我將使用以下命令通過該文件創建共享庫。

> 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的構建沒有任何錯誤。 現在我的主要文件在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.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

您也可以嘗試設置LD_LIBRARY_PATH變量。

您應該這樣做:

export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:<full path where library is present>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM