在/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
。
我在这里缺少什么?
当我在libs上运行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
答案 0 :(得分:3)
由于您显式构建了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