【问题标题】:Using 32bit .so file in a 64bit environment在 64 位环境中使用 32 位 .so 文件
【发布时间】:2014-04-01 16:49:41
【问题描述】:

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

错误:skipping incompatible /opt/lib/libEposCmd.so when searching for -lEposCmd

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

【问题讨论】:

  • 我将 linux-g++ 更改为 linux-g++-32,并在 make 文件中为 CFLAGS、CXXFLAGS 和 LFLAGS 添加了 -m32 选项,但是每次将 i386 替换为 x86-64 时,makefile 都会自动更改。然后我得到 /usr/bin/ld: 跳过不兼容的 /usr/lib/x86_64-linux-gnu/QtXmlPatterns.so 搜索 -lQtXmlPatterns /usr/bin/ld: 跳过不兼容的 /usr/lib/x86_64-linux-gnu /libQtCore.so 搜索 -lQtCore /usr/bin/ld: 跳过不兼容 /usr/lib/x86_64-linux-gnu/libpthread.so 搜索 -lpthread /usr/bin/ld: 跳过不兼容

标签: linux qt x86 64-bit qt4


【解决方案1】:

问题通过以下指令解决:

  • 安装 g++-multilib、libstdc++.i386、libgcc.i386、 glibc-devel.i386, gcc-c++-32bit
  • 编辑 make 文件并调整以下配置:

    cc = add -m32
    CFLAGS = add -m32
    INCPATH = linux-g++-32
    LFLAGS = -m32 -w1, -o1
    LIBS = i386-linux-gnu
    
  • 制作软链接

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

    到 lib .... .so.o 然后到 lib .... .so make clean 并编译

【讨论】:

    【解决方案2】:

    使用字符串命令查看 .so 文件中的值。并检查值

    例如字符串 /opt/lib/libEposCmd.so

    【讨论】:

      猜你喜欢
      • 2015-08-16
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      相关资源
      最近更新 更多