【问题标题】:Compiling 32bit Qt on 64bit Linux - fatal error: gnu/lib-names-32.h在 64 位 Linux 上编译 32 位 Qt - 致命错误:gnu/lib-names-32.h
【发布时间】:2018-04-02 23:18:06
【问题描述】:

编辑:我终于找到了答案here。我一直在进行过于具体的搜索,当我进行更一般的搜索时,我发现了这一点。

我正在尝试在 64 位 Linux Mint 上编译 32 位版本的 Qt 5.6.2,但我收到了错误 fatal error: gnu/lib-names-32.h

为了完成我所做的,我使用了以下配置命令:

./configure -platform linux-g++-64 -xplatform linux-g++-32 -prefix /home/matthew/Qt/Qt5.6.2-S32 -static -opensource -confirm-license -make libs

然后我用make -j4 构建它。我遇到了一些编译错误,通过安装gcc-multilibg++-multilib 解决了,但随后又遇到了另一个错误。

搜索最新错误的解决方案,大部分人建议安装libx32gcc-4.8-devlibc6-dev-i386,但我仍然遇到同样的错误。

有人知道在 64 位 Linux Mint 上构建 32bt Qt 需要安装什么吗?

【问题讨论】:

    标签: c++ linux qt


    【解决方案1】:

    我终于找到了答案here。我一直在进行过于具体的搜索,当我进行更一般的搜索时,我找到了答案。

    【讨论】:

    • 您能否将链接中的一些内容添加到您的答案中?这样,如果您的链接将来无法正常工作,它就会被保留。 :)
    • 链接描述安装sudo apt-get install libx11-6:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libx11-dev:i386 libxcursor-dev:i386 libxext-dev:i386 libxfixes-dev:i386 libxft-dev:i386 libxi-dev:i386 libxrandr-dev:i386 libxrender-dev:i386
    【解决方案2】:

    您可以尝试安装 ia32 库。

    sudo aptitude install ia32-libs

    您在学习教程吗?如果有,请附上链接。您能否解释一下您在 64b 机器上安装 32b Qt 库的动机?

    【讨论】:

    • 我刚刚在另一个 stackoverflow 问题中找到了解决方案。我已经编辑了我的问题以包含指向答案的链接。至于我为什么要在 64 位机器上构建 32 位 Qt,我可以为运行 32 位 Linux 的人构建我的应用程序的 32 位版本。
    【解决方案3】:

    我在Linux Mint 18.3 x64 上遇到了同样的问题,但在这里找到的所有解决方案都没有解决问题。

    我做了一些挖掘,发现我唯一的标题是这些:

    >find /usr/include -iname lib-names*
    /usr/include/x86_64-linux-gnu/gnu/lib-names-64.h
    /usr/include/x86_64-linux-gnu/gnu/lib-names.h
    

    似乎这个包 (libc6-dev:amd64) 负责这些文件:

    >dpkg -S /usr/include/x86_64-linux-gnu/gnu/lib-names-64.h
    libc6-dev:amd64: /usr/include/x86_64-linux-gnu/gnu/lib-names-64.h
    >dpkg -S /usr/include/x86_64-linux-gnu/gnu/lib-names.h
    libc6-dev:amd64: /usr/include/x86_64-linux-gnu/gnu/lib-names.h
    

    我已经尝试删除它:

    >sudo apt remove libc6-dev:amd64
    ... to DELETE:
      build-essential g++ g++-5 g++-5-multilib g++-multilib gcc-5-multilib gcc-multilib lib32stdc++-5-dev libc6-dev
      libc6-dev-i386 libc6-dev-x32 libstdc++-5-dev libx32stdc++-5-dev
    

    如果尝试重新安装已删除的软件包,一切都不会改变。但是如果像这样换一个包(libc6-dev:i386而不是libc6-dev):

    >sudo apt-get install build-essential g++ g++-5 g++-5-multilib g++-multilib gcc-5-multilib gcc-multilib lib32stdc++-5-dev libc6-dev:i386
    libc6-dev-i386 libc6-dev-x32 libstdc++-5-dev libx32stdc++-5-dev
    

    现在它已经安装了所需的标头:

    >find /usr/include -iname lib-names*
    /usr/include/i386-linux-gnu/gnu/lib-names.h
    /usr/include/i386-linux-gnu/gnu/lib-names-32.h
    /usr/include/x86_64-linux-gnu/gnu/lib-names-64.h
    /usr/include/x86_64-linux-gnu/gnu/lib-names.h
    

    看起来某些依赖链接已损坏或不完整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多