日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

tableview动态修改和删除_Ubuntu加载动态库失败的解决方案

發布時間:2024/9/30 Ubuntu 100 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tableview动态修改和删除_Ubuntu加载动态库失败的解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在ubuntu下代碼編譯通過的情況下,經常出現運行時加載動態庫出錯的情況。這些問題很瑣碎,不具備任何技術含量,純屬耽誤時間,這也是linux系統的通病,花里胡哨,故弄玄虛。

為了減少初學者在這種無意義的事情上浪費大量的時間,本文對這個問題提供一點解決方案,這些方案都是在Ubuntu18.04上測試過的,希望對需要者有所幫助。

這里使用的是最小化的代碼,主程序是mytest,其運行時需要調用libtest.so, 成功調用后輸出信息:Hello Shared Library!

否則會抱怨找不到動態庫。

本文的工作目錄為/home/eric/dlltest

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

這就對了,符合本文的預期,libtest.so已經被移除了,所以會報錯。

下面將libtest.so拷貝回來。

有:

可見這樣mytest就找到了動態庫libtest.so。

再次將libtest.so移動到/home/eric/lib/下面,有:

這時候,

dlltest下面只有mytest執行文件,繼續測試有:

錯誤繼續出現,這樣就對了。下面想辦法能夠讓mytest程序能夠找到動態庫libtest.so。

第一種方法:

使用

可以看到,動態庫找到了,然而這種方法關閉了窗口之后就沒效果了。

重啟命令窗口后問題繼續出現,

這時候需要

第二種方法,修改.bashrc文件

進入到/home/eric下(eric是本文在ubuntu上的用戶名)

在.bashrc文件末尾加入:

export LD_LIBRARY_PATH=/home/eric/lib:$LD_LIBRARY_PATH

也就是上圖第121行,保存退出后,運行source .bashrc

可見/home/eric/lib 已經在庫路徑里面了。

這是進入到/home/eric/dlltest目錄:

可見,這次動態庫路徑是對的,為了保險起見,關閉窗口,重新打開,有:

可見還是可以找到的。

下面將export LD_LIBRARY_PATH=/home/eric/lib:$LD_LIBRARY_PATH 從/home/eric/.bashrc文件中注釋掉。

可見還是找的到動態庫,這不科學!

查看庫路徑果然/home/eric/lib還在,這時候需要運行下source .bashrc,可以看到庫變量改變了。

不過雖然是庫變量改變了,但是還是系統找得到動態庫libtest.so,只好關閉窗口重啟了:

這次是真的找不到了。

linux系統下就是經常發生這種非常微妙的小插曲,當你以為搞定了,實際上卻是錯誤的結論,好在本文用了一個最小出錯模型,有大量的時間可以耗下去,如果在生產環境,這種代價是承受不起的。

這樣第二種方法也測試成功了。下面介紹第三種方法。

第三種方法,修改/etc/ld.so.conf文件

本文的/etc/ld.so.conf內容為:

加上路徑/home/eric/lib/

有:

修改后保存。

繼續測試mytest,可見還是找不到庫。

這是需要運行sudo ldconfig:

本文運行的當前目錄是/home/eric/dlltest

可見sudo ldconfig命令不挑當前目錄。

為了保險起見,關閉窗口,重新啟動:

可見還是可以找得到的,說明此方法可行。

繼續修改etc/ld.so.conf文件,刪除路徑/home/eric/lib/,并運行sudo ldconfig等有:

說明又找不到了,好的,符合預期,重啟窗口試一下,雖然不大有可能出現反常,但是怕了,必須驗證!

還是沒找到,說明的確第三種方法是起作用的。

下面介紹第四種方法:

第四種:在/etc/ld.so.conf.d/目錄下添加youtest.conf文件

文件內容為/home/eric/lib/

也就是動態庫libtest.so的所在路徑。

可以看到youtest.conf文件產生了。

這是運行mytest測試一下:

沒找到,這符合預期,還沒有使用sudo ldconfig命令

可見,這次文件youtest.conf起作用了,文件名youtest.conf是為了避嫌,也就是這個可以和mytest不一樣,當然后綴名是需要.conf就行。

再次重啟窗口,

可見還是可以找得到動態庫。

說明這種方法也是成功的。

綜上所述,本文介紹了找動態庫的四種方法,也許方法可能會有千千萬萬種,但是本文不感興趣,有了這幾種方法后,初學者容易有獲得感和幸福感,從而有進一步學習的勇氣和道路自信,其它的方法都可以觸類旁通,進而獲得更大意義上的自由。

應該說,本文的環境是WSL下的ubuntu18.04,在其它系統上可能會產生一些細微的差異,需要靈活運用。

后面有時間的話還會有些類似的文章,掃清這種沒有任何技術含量的學習障礙,從而使初學者能夠將有限的時間放到有價值的事情上去。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的tableview动态修改和删除_Ubuntu加载动态库失败的解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。