ld无法找到文件

时间:2015-05-13 14:18:35

标签: linux gcc linker g++

我正在研究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

1 个答案:

答案 0 :(得分:0)

有两个错误。

第一个说libssh2.so是一个32位的共享库,但你在64位平台上进行链接。在64位平台上,它通常默认链接到64位对象。将-m32开关添加到编译和链接命令行以构建并以32位模式链接。

第二个是链接器找不到-lssh2。在这种情况下,您需要指定查找-lssh2的目录,例如-L/usr/local/lib -lssh2