C语言写了个链接mysql数据库的程序。
在solaris 10 32位 下安装 32位的mysql,32位的gcc 编译程序通过
在solaris 9 sparc 64位下 安装 64位mysql,64位的gcc编译就不能通过。
提示错误信息如下:
root:/soft/bgp/libbgpdump-1.4.99.11#gcc -o mysql mysql.c -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
ld: fatal: file /usr/lib/libmysqlclient.so: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to mysql
collect2: ld returned 1 exit status
请教大家,这个怎么解决啊!
在solaris 10 32位 下安装 32位的mysql,32位的gcc 编译程序通过
在solaris 9 sparc 64位下 安装 64位mysql,64位的gcc编译就不能通过。
提示错误信息如下:
root:/soft/bgp/libbgpdump-1.4.99.11#gcc -o mysql mysql.c -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
ld: fatal: file /usr/lib/libmysqlclient.so: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to mysql
collect2: ld returned 1 exit status
请教大家,这个怎么解决啊!
你这个命令,肯定是以64位模式进行编译链接的,但是你得确认mysqlclient这个库也是64位的库,否则就会出你所说的错。
你搜一下,gcc有兼容32位模式编译选项。
root:/usr/lib#file libmysqlclient.so
libmysqlclient.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped
2、gcc版本是3.3.2
root:/usr/lib#gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.3.2/specs
Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls
Thread model: posix
gcc version 3.3.2
3、我用了你说的方式 gcc -m32 -o mysql mysql.c -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql 一样还是报同样的错误。纠结了好几天就是弄不好这个了!!
你的gcc是32位的???
你看能不能以-m64来编译,如果不能,试着用64位的gcc