g ++ throw文件无法识别:文件格式无法识别错误

时间:2013-01-18 17:35:14

标签: linux g++ libpq

使用命令g++ -o test -L . -l pq

获取以下错误
libpq.so: file not recognized: File format not recognized

#file libpq.so
libpq.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), not stripped

gcc版本4.1.2 20070115(SUSE Linux)

如果我尝试使用-l dbodbc代替-l pq,我会收到同样的错误。

请注意test.c是一个简单的hello world程序。

先谢谢。

1 个答案:

答案 0 :(得分:6)

file /usr/bin/g++告诉您g++本身是64位可执行文件,即它在64位计算机上运行,​​它不会告诉您g ++可以编译 64位代码(它非常不可能,但可能是一个完全不同的处理器的交叉编译器!)使用g++ -vg++ -dumpmachine找出它为其生成可执行文件的目标。

G ++实际上并没有使用该库,它只是将-l选项传递给链接器,因此错误来自链接器ld

如果ldobjdump都说他们无法识别该库,但同一个文件在另一台计算机上运行正常,我会尝试更新或重新安装binutils包,提供ldobjdump

您可能安装了32位binutils,因此ldobjdump无法理解x86_64库。确保安装了64位(即x86_64)binutils RPM。