我不去图书馆

ld not picking up library

本文关键字:图书馆      更新时间:2023-10-16

/usr/local/lib中我有以下文件:

libxerces-c.so
libxerces-c.so.28
libxerces-c.so.28.0

我的链接器在这个命令中失败:

g++ -m64 -o waspxs ConfigureWaspJobs.o MainWindow.o DataTypes.o waspxs.o 
    XercesString.o qrc_buttons.o moc_ConfigureWaspJobs.o moc_MainWindow.o 
    -L/usr/X11R6/lib64 -L../common -L../prewaspwdll -L/usr/local/lib 
    -pthread -lcommon -lprewaspwdll -lxerces-c -lQt5Widgets 
    -L/usr/lib/x86_64-linux-gnu -lQt5Gui -lQt5Core -lGL -lpthread
/usr/bin/ld: cannot find -lxerces-c

注意选项包括-L/usr/local/lib-lxerces-c

我在这里错过了什么?

当我运行file在库:

$ file libxerces*
libxerces-c.so:           broken symbolic link to `/home/samuel/Desktop/xerces-c-src_2_8_0/lib/libxerces-c.so.28'
libxerces-c.so.28:        symbolic link to `libxerces-c.so.28.0'
libxerces-c.so.28.0:      ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x44c1a6dbfbe5b51a17fc0ce42097af88a8e8a7f0, not stripped
libxerces-depdom.so:      broken symbolic link to `/home/samuel/Desktop/xerces-c-src_2_8_0/lib/libxerces-depdom.so.28'
libxerces-depdom.so.28:   symbolic link to `libxerces-depdom.so.28.0'
libxerces-depdom.so.28.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xc9f643c520055a931c596f713853654192a5a7fa, not stripped

由于您正在显式地构建64位二进制文件(因为您正在使用-m64),因此您应该确保安装了64位版本的xerces。通常,64位库目录会附加64。例如:/usr/local/lib64 .


file命令报告符号链接断开。因此,找不到图书馆。要修复,请删除断开的链接,并创建一个固定的链接。

rm /usr/local/lib/libxerces-c.so
ln -s /usr/local/lib/libxerces-c.so.28 /usr/local/lib/libxerces-c.so

如果您的ln版本支持它,您可以使用一个命令:

ln -sf /usr/local/lib/libxerces-c.so.28 /usr/local/lib/libxerces-c.so