簡體   English   中英

鏈接器找不到現有庫

[英]Linker cannot find existing library

我嘗試使用來自SysGCC 的 Crosscompiler Tools 為我的raspberry創建一個程序。 我正在為這個程序使用 MySQL CPPConn。 但是在我添加了 mysqlclient 和 mysqlcppconn 庫之后,我得到了奇怪的錯誤:

d:/program data/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/4.9/../../../../arm-linux-gnueabihf/bin/ld.exe: warning: libz.so.1, needed by D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf/libmysqlclient.so, not found (try using -rpath or -rpath-link)
d:/program data/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/4.9/../../../../arm-linux-gnueabihf/bin/ld.exe: warning: libdl.so.2, needed by D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf/libmysqlclient.so, not found (try using -rpath or -rpath-link)

我的eclipse使用以下命令進行編譯:

arm-linux-gnueabihf-g++ -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf" -lpthread -o "SensorBox"  ./DBController.o ./DS18B20.o ./main.o   -llog4cpp -lnsl -lmysqlclient -lmysqlcppconn

嘗試命令后:

arm-linux-gnueabihf-g++ -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf" -lpthread -rpath "D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf/libz.so.1" -o "SensorBox"  ./DBController.o ./DS18B20.o ./main.o   -llog4cpp -lnsl -lmysqlclient -lmysqlcppconn

arm-linux-gnueabihf-g++ -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf" -lpthread -rpath-link "D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf/libz.so.1" -o "SensorBox"  ./DBController.o ./DS18B20.o ./main.o   -llog4cpp -lnsl -lmysqlclient -lmysqlcppconn

我收到錯誤消息:

arm-linux-gnueabihf-g++: error: unrecognized command line option '-rpath'
arm-linux-gnueabihf-g++: error: unrecognized command line option '-rpath-link'

文件 libz.so.1 和 libdl.so.2 存在於:

D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf

在 Mathieu Van Nevel 發表評論后,我也嘗試過:

arm-linux-gnueabihf-g++ -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf" -lpthread -Wl,-rpath,"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf/libz.so.1" -o "SensorBox"  ./DBController.o ./DS18B20.o ./main.o   -llog4cpp -lnsl -lmysqlclient -lmysqlcppconn

但它會導致與沒有“-rpath”相同的錯誤:

d:/program data/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/4.9/../../../../arm-linux-gnueabihf/bin/ld.exe: warning: libz.so.1, needed by D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf/libmysqlclient.so, not found (try using -rpath or -rpath-link)
d:/program data/sysgcc/raspberry/bin/../lib/gcc/arm-linux-gnueabihf/4.9/../../../../arm-linux-gnueabihf/bin/ld.exe: warning: libdl.so.2, needed by D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf/libmysqlclient.so, not found (try using -rpath or -rpath-link)

知道為什么鏈接器找不到這些文件嗎?

謝謝

整數

如此處所述使用 Wl 和 rpath 對我有用:

arm-linux-gnueabihf-g++ -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib\arm-linux-gnueabihf" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\local\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\usr\lib" -L"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf" -lpthread -Wl,-rpath-link,"D:\Program Data\SysGCC\Raspberry\arm-linux-gnueabihf\sysroot\lib\arm-linux-gnueabihf" ...

暫無
暫無

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

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