簡體   English   中英

在C ++中使用dlopen時出現未定義的參考錯誤

[英]undefined reference error in using dlopen in c++

我正在嘗試從Debian交叉編譯用於手臂系統的apache-qpid

undefined reference to __dlopen錯誤的undefined reference to __dlopen ,但似乎與先前的警告有關:

在靜態鏈接的應用程序中使用'dlopen'要求在運行時需要glibc版本的共享庫用於鏈接...

這是詳細信息:

[ 86%] Linking CXX shared library libqpidcommon.so
CMakeFiles/qpidcommon.dir/qpid/sys/posix/Shlib.cpp.o: In function       
`qpid::sys::Shlib::load(char const*)':
/home/mert/qpid-cpp-0.34/src/qpid/sys/posix/Shlib.cpp:32: warning: Using   
'dlopen' in statically linked applications requires at runtime the shared  
libraries from the glibc version used for linking
/home/mert/IDE/cVEND/00.00.14/bin/../arm-feig-linux-  
gnueabi/sysroot/usr/lib/libdl.a(dlopen.o): In function `dlopen':
dlopen.c:(.text+0xc): undefined reference to `__dlopen'

我不知道到底發生了什么以及如何解決。

這里有一個類似的東西,我嘗試添加-static -ldl -lc C_FLAGS但是沒有區別。

任何幫助表示贊賞。

編輯:

編輯:

我不確定到底是什么解決了這個問題,但是我認為-ldl確實在尋找libdl.so ,但是在arm目錄中,它是libdl-2.19.so ,因此,很可能它正在尋找並找到另一個目錄。 我已將libdl.so鏈接到libdl-2.19.so ,現在正在編譯。

鏈接器需要選項,而不是編譯器。 請參閱LDFLAGS。

https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html

當編譯器應該調用鏈接程序“ ld”時,它們會賦予額外的標志,例如-L。 應該將庫(-lfoo)添加到LDLIBS變量中。

如果在制作步驟中發生此錯誤,請嘗試執行

make LIBS=-ldl

並確保LDFLAGS中存在庫路徑

export LDFLAGS=-L<path/to/ldl>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM