2

Solarissparcサーバーで動的共有ライブラリを作成して使用する手順を読んでいます。以下は私が持っているファイルです:

> 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

ライブラリが見つからないと記載されていますが、上記のように、ライブラリは同じディレクトリにあります。

誰かplsが私を助けることができますか?

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);
}
4

2 に答える 2

0

LD_LIBRARY_PATH変数を設定することもできます。

あなたがしているはずです:

export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:<full path where library is present>
于 2012-11-22T11:01:44.493 に答える