cmak交叉編譯出現連線錯誤及rpath講解

2021-09-29 07:35:25 字數 722 閱讀 8639

交叉編譯時經常出現 not found (try using -rpath or -rpath-link)這樣的錯誤

因為我們是交叉編譯所以缺少庫是經常發生的事。特別是編一些依賴比較多的庫的時候,比如opencv等等

出現這個肯定是交叉編譯環境裡面沒有相應的庫。那麼此時我們可以設定rpath 讓程式先編譯鏈結通過。

rpath是什麼?

說白了其實就是將庫路徑儲存在二進位制檔案中以在執行時查詢依賴項的能力

那麼我們將rpath 設定一下,讓他在鏈結的時候先不找,等到執行的時候就可以去相應的目錄找了

$origin是什麼?

ld.so在rpath規範中理解字串$origin就代表程式的目錄

那麼此時我們可以設定cmakelists.txt 的內容如下所示

cmake_minimum_required(version 2.7)

project(htest)

set(cmake_c_flags "$ -o0 -std=c++11 -lpthread -wl,--rpath='$origin'"

)set(cmake_cxx_flags "$-o0 -std=c++11 -lpthread -wl,--rpath='$origin'"

)

此時就可以編譯通過了

g 編譯出現glibc detected 錯誤

glibc detected free invalid pointer glibc detected malloc memory corruption glibc detected double free or corruption out 0x00000000005c18a0 glibc dete...

g 編譯出現glibc detected 錯誤

glibc detected free invalid pointer glibc detected malloc memory corruption glibc detected double free or corruption out 0x00000000005c18a0 glibc dete...

使用VC2005編譯出現這個錯誤

include unknwn.idl 108 error midl2025 syntax error expecting or near annotation include unknwn.idl 108 error midl2026 cannot recover from earlier synt...