我正在閱讀在solaris sparc服務器上創建和使用動態共享庫的過程。下面 是文件我有:在solaris上創建和使用動態共享庫
> 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是沒有任何錯誤建成。 現在我的主要是在文件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);
}
我想這應該是-R和-r也不是 – Vijay
的-R,我把CC文檔鏈接在我的答案 – billz