dlopen Linux 動態庫失敗原因與解決辦法總結(轉)


1、dlopen 動態庫失敗原因,我碰到主要是以下幾點(碰到新問題之后再完善,先打個點)
①動態庫位置沒有放對地方,dlopen 時候找不到你想操作的動態庫
解決辦法:放到指定目錄。
②頭文件沒有包全,有不能識別的函數或者標識符
解決辦法:加一條打印信息,程序運行到這里,會輸出不能識別標識符。

if((handle = dlopen(myso, RTLD_NOW)) == NULL) {  
        printf("dlopen - %sn", dlerror());  
        exit(-1);  
    }  

或者用ldd(具體看編譯交叉鏈,這里是用 gcc 編寫的動態庫,其它交叉編譯鏈視具體情況而定)。
③makefile 編寫問題
①沒有指定 -fPIC 編譯選項 (Position-Independent Code 代碼與位置無關);
②沒有指定 -shared 外部程序可以訪問這個動態庫。

 

轉自:https://blog.csdn.net/xy010902100449/article/details/48036609


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM