使用命令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++ -v
或g++ -dumpmachine
来找出它生成的可执行文件的目标。
G ++实际上并不使用这个库,它只是将-l
选项传递给链接器,所以错误来自链接器ld
如果ld
和objdump
都表示无法识别库,但是同一个文件在另一台机器上很好,我会尝试更新或重新安装binutils
软件包,它提供了ld
和objdump
。
你可能安装了一个32位binutils
,所以它的ld
和objdump
不能理解x86_64库。 确保安装了64位(即x86_64)binutils RPM。