g ++投掷文件无法识别:文件格式无法识别的错误

使用命令g++ -o test -L . -l pq获得跟随错误g++ -o test -L . -l pq 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世界程序。

提前致谢。

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。