色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【GCC編譯運行報錯】error while loading

嵌入式物聯網開發 ? 來源:嵌入式物聯網開發 ? 作者:嵌入式物聯網開發 ? 2022-08-26 13:14 ? 次閱讀

運行編譯后的程序報錯 error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

-------------------------------------------------------------------------------------------------------------------

首先說明一下,這個題目有點長,但是卻很好地反應了遇到的問題點。

在《如何用C代碼生成二維碼》一文中,小編也向大家展示了在正確無誤地編譯好qrcode_test程序后,運行報錯的問題。這次我們再拿出來說一說。

當時在終端手動./運行程序報錯的提示./qrcode_test: error while loading shared libraries: libzint.so.2.4: cannot open shared object file: No such file or directory

大概的意思就是在運行程序的時候,沒有找到程序所需的libzint.so動態庫。大家都知道,動態庫與靜態庫的最大區別就是:靜態庫是靜態鏈接,也就是在生產可執行文件的時候就把靜態庫中的實現嵌入到程序中了,一旦編譯成功了,靜態庫也就有存在的價值了,即便靜態庫不存在了,可執行程序也是可以跑起來的;但是動態庫就不一樣了,它是遵循動態鏈接,也是就說編譯的時候需要指定路徑去找該so文件鏈接編譯,運行的時候也需要指定相應的路徑去找。如果在運行的時候,可執行程序會先去默認的系統lib目錄下,尋找該so,如果找不到了,就該報錯了:error while loading shared libraries。(可以通過該文章,了解下動態庫的動態加載機制http://blog.csdn.net/dbzhang800/article/details/6918413

上面這一段話,講可執行程序運行時去找so文件,講得比較籠統,以下總結以下:

動態庫的搜索路徑搜索的先后順序是:

1.編譯目標代碼時指定的動態庫搜索路徑;

2.環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑;

3.配置文件/etc/ld.so.conf中指定的動態庫搜索路徑;

4.默認的動態庫搜索路徑/lib /usr/lib。

可參考下這篇博文,它里面提及了gcc編譯動態庫和運行鏈接動態庫的知識。linux-gcc 編譯時頭文件和庫文件搜索路徑 - zhengmeifu - 博客園

回到可執行程序運行報error while loading shared libraries錯的問題上來,在《如何用C代碼生成二維碼》一文中,也講到了如何避過這種錯誤而將程序跑起來,我們使用的是上面提及的2.環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑;”,即通過設置LD_LIBRARY_PATH,把當前程序使用的so的路徑添加到LD_LIBRARY_PATH中去,這樣程序跑起來的時候,去LD_LIBRARY_PATH找肯定就可以找到該so了。當然之前我們也已經驗證了此方法的正確性。

看,程序運行就沒有問題。

如果僅僅又是重復介紹該方法,那么此文存在的意義就不大了。此文最大的意義在于,告訴讀者,我們可以不用設置LD_LIBRARY_PAT,也一樣可以把程序跑起來,那么我們該從那里下手呢?本文主要介紹,從編譯該程序開始。

這里就要先介紹下gcc的編譯選項了,但這里不具體細說,有興趣可以通過man gcc去了解,或者從博文的上一篇文章 【轉載】gcc 使用中常用的參數及命令【轉載】gcc 使用中常用的參數及命令 - 架構師李肯 - 博客園 去了解。

這里,我們需要用到的編譯選項是-Wl,-rpath;主要這里是字母l,而不是數字1。-rpath選項就是告訴gcc在編譯鏈接的時候,把該程序的運行是查找so的路徑寫入到ELF文件中。使用方法就是 gcc –o OutApp *.c –lzint –Wl,-rpath=”/usr/local/lib”或gcc –o OutApp *.c –lzint –Wl,-rpath –Wl,“/usr/local/lib”兩者在功能是等價的。如下圖所示:

從圖中我們可看到,確實編譯成功后直接運行程序就不會再報error while loading shared libraries了,而且這種方法最大的好處就是,在編譯成功后,不用再去做任何設置就可以把程序跑起來了,當然是編譯時傳遞的-rpath參數得是正確的。這個方法,尤其是在交叉編譯嵌入式設備的可執行程序時,十分有用。不妨讀者可以自己試試看。

?審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5087

    文章

    19148

    瀏覽量

    306156
  • GCC
    GCC
    +關注

    關注

    0

    文章

    107

    瀏覽量

    24856
  • 編譯
    +關注

    關注

    0

    文章

    659

    瀏覽量

    32911
收藏 人收藏

    評論

    相關推薦

    Linux 下GCC編譯

    一、Linux 下多文件編譯 在上一篇 Linux 下的 C 編程我們知道了 Linux 下的編譯器為 GCC ,以及如何使用 GCC 進行編譯
    的頭像 發表于 09-11 15:18 ?2660次閱讀
    Linux 下<b class='flag-5'>GCC</b>的<b class='flag-5'>編譯</b>

    Error loading design # Error: Error loading design # Pausing macro ex...

    如圖,quartus11.0 調用modelsim時候總是出現:Error loading design# Error: Error loading
    發表于 03-14 19:11

    modelsim仿真出錯“Error loading design”

    最近不知為何,我的modelsim_ase在仿真時經常出現“Error loading design”的錯誤提示,但是代碼編譯是成功的。而且,每次重裝之后就不會報錯了。求教,這是怎么回
    發表于 07-29 20:55

    error loading design

    本帖最后由 小工兵 于 2015-8-23 13:57 編輯 最近用modelsim仿真工程時老是遇到報錯error loading design ,而且無其他錯誤信息,設計的編譯
    發表于 08-23 13:55

    gcc編譯出錯

    hello.c無法編譯 編譯如下3)fatal error: sys/cdefs.h No such file or directory解決方案 運行sudo apt-get upda
    發表于 04-01 07:45

    基于CM33核,GCC編譯中嵌入匯編報錯

    原有的工程是MDK下編譯通過。現在使用GCC編譯,代碼中有調用__set_PRIMASK(0);結果使用GCC編譯
    發表于 05-12 10:33

    為什么OKMX6UL-C板子直接執行編譯好的qt程序會報錯

    板子型號:OKMX6UL-C直接執行編譯好的qt程序報錯,或者打開/opt/qt4.8.5/apps/led 里面的led程序 報錯報錯內容:err
    發表于 01-07 07:25

    淺談gcc編譯

    3.3 gcc編譯器 GNU CC(簡稱為gcc)是GNU項目中符合ANSI C標準的編譯系統,能夠編譯用C、C++和Object C等語言
    發表于 10-18 13:48 ?0次下載

    如何在Keil MDK中使用GCC編譯器工具鏈

    Keil MDK 是否支持編譯器?有沒有辦法選擇其他編譯器? 可能你使用其他GUN工具鏈進行編譯時,會出現類似如下錯誤: --- Error: cant execute as---
    的頭像 發表于 11-20 15:53 ?4732次閱讀

    "移植STM32F051,編譯后遇到 #error ""Please select first the target STM32F0xx device used in your applicatio"

    報錯如下編譯報錯如下解決辦法編譯報錯如下.\Libraries\CMSIS\Device\ST\STM32F0xx\Include\stm3
    發表于 12-02 17:21 ?9次下載
    "移植STM32F051,<b class='flag-5'>編譯</b>后遇到    #<b class='flag-5'>error</b> ""Please select first the target STM32F0xx device used in your applicatio"

    "STM32-MDK: Error: L6915E: Library reports error: __use_no_semihosting was requested,"

    編譯程序是報錯:…\OBJ\test_program.axf: Error: L6915E: Library reports error: __use_no_semihosting
    發表于 12-03 09:51 ?9次下載
    "STM32-MDK: <b class='flag-5'>Error</b>: L6915E: Library reports <b class='flag-5'>error</b>: __use_no_semihosting was requested,"

    IAR 報錯報錯Error[Pe020]: identifier “XXX“ is undefined

    報錯Error[Pe020]: identifier “s” is undefined看上圖,s肯定是已經定義了,為什么還會有這種報錯。請小伙伴注意,如果這是c文件中聲明的第一個函數,那么肯定是頭文件出問題了。我這邊回頭查看頭
    發表于 12-03 11:06 ?6次下載
    IAR <b class='flag-5'>報錯</b><b class='flag-5'>報錯</b>:<b class='flag-5'>Error</b>[Pe020]: identifier “XXX“ is undefined

    stm32 cubemx 添加 rt-thread 操作系統 context_gcc.S 編譯報錯

    stm32 cubemx 添加 rt-thread 操作系統 context_gcc.S 編譯報錯解決方法(eclipse+CDT 或 cubeide)解決方法(eclipse+CDT 或
    發表于 12-27 18:47 ?7次下載
    stm32 cubemx 添加 rt-thread 操作系統 context_<b class='flag-5'>gcc</b>.S <b class='flag-5'>編譯</b><b class='flag-5'>報錯</b>

    如何從GCC源碼學編譯原理

    本文結合編譯原理理論和GCC實踐做了一個總結,希望能給需要了解編譯原理和底層知識的同學一個更快的學習路徑。
    的頭像 發表于 03-02 16:15 ?3205次閱讀
    如何從<b class='flag-5'>GCC</b>源碼學<b class='flag-5'>編譯</b>原理

    Linux使用gcc編譯程序的語法

    01. 調試相關的宏 在Linux使用gcc編譯程序的時候,對于調試的語句還具有一些特殊的語法。 gcc編譯的過程中,會生成一些宏,可以使用這些宏分別打印當前源文件的信息,主要內容是當
    的頭像 發表于 06-22 10:51 ?719次閱讀
    主站蜘蛛池模板: 武侠古典久久亚洲精品| 折磨比基尼美女挠肚子| a视频在线看| 欧美精品AV精品一区视频| music radio在线收听| 丝袜美女被艹| 精品爽爽久久久久久蜜臀| 99精品国产福利在线观看| 色综合欧美色综合七久久| 国内精品免费久久影院| 中文字幕偷乱免费视频在线| 欧美丝袜女同| 国产在线播放不卡| 97成人在线视频| 无码一区国产欧美在线资源| 久久综合中文字幕无码| 成人区在线观看免费视频| 亚洲欧美中文字幕先锋| 青柠在线电影高清免费观看| 国产综合18久久久久久软件| 97在线精品视频| 亚洲AV无码乱码A片无码蜜桃| 妈妈的朋友5在线观看免费完整版中文 | 男子扒开美女尿口做羞羞的事| 俄罗斯XXXXXL18| 最近中文字幕2019免费版日本| 日本老师xxxxx18| 久久精品久久久| 国产99久久亚洲综合精品西瓜tv| 欲香欲色天天天综合和网| 熟妇久久无码人妻AV蜜桃| 麻豆无人区乱码| 和姐姐做插得很深| 高h超辣bl文| 99视频一区| 一色屋精品亚洲香蕉网站| 她也色在线视频站| 欧美精品一区二区三区视频| 久久国产精品二区99| 国产麻豆剧看黄在线观看 | bbw极度另类孕妇|