[英]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.