我正在研究RedHat系统。
uname -m
x86_64
所有的库都是32位。
/usr/bin/ld lib/libssh2.so
lib/libssh2.so could not read symbols: File in wrong format
file lib/libssh2.so
lib/libssh2.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
编译时我收到错误:
usr/bin/ld: cannot find -lssh2
collect2: ld returned 1 exit status
编译命令:
g++ src/Testcase.o src/Test.o -L../testcase/lib -L/usr/lib -L/usr/lib \
-lcrypto -lz -lpthread -lssl -lcurl -lssh2 -o ./debug/testcase
答案 0 :(得分:0)
有两个错误。
第一个说libssh2.so
是一个32位的共享库,但你在64位平台上进行链接。在64位平台上,它通常默认链接到64位对象。将-m32
开关添加到编译和链接命令行以构建并以32位模式链接。
第二个是链接器找不到-lssh2
。在这种情况下,您需要指定查找-lssh2
的目录,例如-L/usr/local/lib -lssh2
。