天天看點

Linux生成和使用so庫

最近,項目要求将處理使用者的操作的函數做成so檔案,然後找了一下相關的資料。現将整理的内容描述如下。

首先是會碰到的問題:

1 如何制作動态連結庫

2 如何讓程式找到動态連結庫

關于問題一:略過!(不是重點,網上文章很多)

關于問題二:比如我們生成了一個動态連結庫test.so。此時該檔案在我們的工作目錄下,和我們調用的程式在一起,這個時候執行程式會提示

error while loading shared libraries: XXX.so: cannot open shared object file: No such file or directory
           

原因是:Linux系統的so檔案有固定的查找路徑,so檔案必須在這些路徑下。那如何檢視這些路徑呢?請cat或者vim /etc/ld.so.conf檔案,該檔案列出了Linux查找so檔案的路徑。

顯然,我并不想打亂Linux系統檔案的組織,我希望有一個查找路徑專門對應我的這個程式的所有so檔案。如何做:

    第一:mkdir 一個合适路徑,比如我的是 /usr/local/mysopath.。

    第二:cp所有我需要的so檔案到這個路徑下。

    第三:vim /etc/ld.so.conf 在最後一行添加我的路徑:/usr/local/mysopath。

    第四:使用ldconfig指令,使得我的修改生效。

再次運作我的程式,這個時候就沒有問題了。将來要解除安裝自己的程式,隻要在解除安裝的腳本中添加删除“/usr/local/mysopath”檔案的語句即可。

繼續閱讀