在64位环境中使用32位.so文件

5

我使用的是Ubuntu 12.04 64位系统,在编译一个需要32位.so文件的Qt项目时,出现了以下错误:

错误:在查找-lEposCmd时跳过不兼容的/opt/lib/libEposCmd.so

我想使用-m32选项编译此项目,但我不知道应该在哪里插入此选项。


我将linux-g++更改为linux-g++-32,并在makefile中的CFLAGS、CXXFLAGS和LFLAGS中添加了-m32选项,但每次i386被替换为x86-64时,makefile会自动更改。然后我遇到了/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/QtXmlPatterns.so when searching for -lQtXmlPatterns /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libQtCore.so when searching for -lQtCore /usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libpthread.so when searching for -lpthread /usr/bin/ld: skipping incompatible的问题。 - Farshid616
2
https://dev59.com/TnM_5IYBdhLWcg3wslRW - Michael Tomkins
2个回答

2
以下指示解决问题:

  • installing g++-multilib, libstdc++.i386, libgcc.i386, glibc-devel.i386, gcc-c++-32bit
  • edite make file and adjust below config:

    cc = add -m32
    CFLAGS = add -m32
    INCPATH = linux-g++-32
    LFLAGS = -m32 -w1, -o1
    LIBS = i386-linux-gnu
    
  • make softlink of

    /usr/lib/i386-GNU-linux/libQtCore.so.4.1
                        libQtGui.....
                        libQtXmlPattern..
                        libQtXml.....
    

    to lib .... .so.o then to lib .... .so make clean and compile


0
使用字符串命令查看.so文件中的值,并检查这些值。
例如:string /opt/lib/libEposCmd.so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接