【问题标题】:Cygwin error: "child_info_fork::abort: Loaded to different address:"Cygwin 错误:“child_info_fork::abort:加载到不同的地址:”
【发布时间】:2016-06-02 21:42:00
【问题描述】:

我正在尝试在 Windows-7 上使用 cygwin-x86(32 位版本)构建我的软件。
Cygwin-x64(64 位)在同一台机器上运行良好。我想构建 32 位可执行文件。
每当我尝试 cygwin-x86 时,都会收到以下错误:

[main] make 7780 child_info_fork::abort: C:\cygwin\bin\cygiconv-2.dll:加载到不同的地址: parent(0x440000) != child(0x5F0000)
ma​​ke: fork: 临时资源 不可用

我已经检查了这个帖子Cygwin Error

我已经尝试了其中提到的所有方法,但我仍然面临同样的问题。
每当我尝试 /usr/bin/rebaseall -vcd /usr/bin && ./rebaseall -v 时,如已接受答案的第 7 步中所述在上述线程中,我收到此错误:

/usr/x86_64-pc-cygwin/sys-root/usr/bin/cygvtv_stubs-0.dll:跳过 因为机器类型错误。 /usr/x86_64-pc-cygwin/sys-root/usr/bin/cygz.dll:因为错误而跳过 机器的种类。
分段错误(核心转储)

对于许多其他 .dll 文件,我也遇到了这种错误的机器类型错误。
如前所述,我的机器上安装了 cygwin-64 并按预期工作。但是在运行 rebaseall 时,它以某种方式寻找 x86-64-pc-cygwin 而不是 32 位版本。

【问题讨论】:

    标签: windows shell cygwin


    【解决方案1】:

    线程已过时。

    运行/usr/bin/rebase-trigger,关闭所有cygwin进程并再次运行setup-x86.exe。同样不安装任何东西都会为你执行一个变基。

    您也可以指定选项 full。

    补充说明: 在 32 位系统上 fork 问题最可能的原因是安装了太多的程序和库。

    例如: /usr/x86_64-pc-cygwin/sys-root/usr/bin/cygz.dll

    属于cygwin64-zlib 一个用于从 cygwin32 构建 cygwin64 程序的交叉库。你真的需要吗?如果不是,我怀疑,删除所有 cywgin64 包。

    【讨论】:

    • 奇怪的是,问题在安装程序运行时解决了(即我可以执行 svn up),但安装程序结束后它又被破坏了。一旦 svn up 正常工作,我通过取消设置解决了这个问题。到目前为止没有副作用。
    • @DRSDavidSoft Rebaseall 方法被替换为 rebase-trigger sourceware.org/ml/cygwin-announce/2016-02/msg00005.html
    【解决方案2】:

    该问题也可能由防病毒程序触发。 (我看到 Avast 发生了这种情况。)您可以通过禁用它来测试这是否是原因。

    【讨论】:

    • 确实是我的情况。使用 AVG!
    • AVG 也阻止了我。您可以在托盘中单击,右键单击 AVG,然后将“保护已打开”设置为关闭位置。然后我回到 git shell 并输入“eval $(ssh-agent -s)”并成功。我重新启用了我的 AVG。
    • 谢谢!我刚刚安装了 AVG,这就是问题所在。
    【解决方案3】:

    【讨论】:

    • 是的,对我来说是 KB4566516。我取消了它,它又可以工作了。
    【解决方案4】:

    你也可以杀死每一个被分叉的 ash、dash 或 bash 的最新进程,setup.exe 将简单地跳过这个脚本并继续其余的。 我不得不杀死大约 10-20 个,主要是在乳胶安装后脚本中。

    【讨论】:

      【解决方案5】:

      对我来说,解决方案是从 c:\cygwin64\bin\ 中删除库的 .new 文件扩展名

      我在使用 git 时遇到了同样的问题。各种 dll 取决于使用的 git 命令,其中包含在错误消息中,说明它已加载到“不同的地址”。

      事实上,公司的防病毒软件或加载的程序可能会在安装新程序(在我的情况下为 git-svn)时在变基阶段阻止 un update 一些必需的库没有安装,但巧妙地保留在目标中,文件扩展名为.new

      我只需要删除.new 扩展(并将原始库重命名为.old)即可解决问题。

      就我而言,所涉及的库列表是:

      cygcrypto-1.1.dll
      cyggcc_s-seh-1.dll
      cygintl-8.dll
      cygwin1.dll
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-20
        • 1970-01-01
        • 2018-08-31
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 2020-08-15
        相关资源
        最近更新 更多