7

使用命令出现以下错误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 程序。

提前致谢。

4

1 回答 1

6

file /usr/bin/g++告诉你它g++本身是一个 64 位可执行文件,即它在 64 位机器上运行,它并没有告诉你 g++ 可以编译64 位代码(这不太可能,但它可能是一个完全不同的交叉编译器处理器!)使用g++ -vg++ -dumpmachine找出它生成可执行文件的目标。

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

如果ldobjdump都说他们无法识别库,但相同的文件在不同的机器上很好,我会尝试更新或重新安装binutils包,它同时提供ldobjdump.

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

于 2013-01-19T23:07:38.577 回答