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
请教大家,这个怎么解决啊!

解决方案 »

  1.   

    gcc -o mysql mysql.c -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql   
    你这个命令,肯定是以64位模式进行编译链接的,但是你得确认mysqlclient这个库也是64位的库,否则就会出你所说的错。
    你搜一下,gcc有兼容32位模式编译选项。
      

  2.   

    1、gcc 调用的/usr/lib 下的mysqlclient 是64位的
    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   一样还是报同样的错误。纠结了好几天就是弄不好这个了!!
      

  3.   

    你64位的libmysqlclient.so是怎么来的?
    你的gcc是32位的???
    你看能不能以-m64来编译,如果不能,试着用64位的gcc