【问题标题】:Compiling C++ with -m32 With Cygwin G++ Windows 64bit Error使用 -m32 编译 C++ 时出现 Cygwin G++ Windows 64 位错误
【发布时间】:2018-05-22 01:34:04
【问题描述】:

我正在尝试使用 cygwin g++ 使用 -m32 编译我的 c++ 程序,但是当我尝试这样做时出现错误。

根据我所读到的问题,我需要从 cygwin 包管理器下载一个包,该包将允许 -m32 工作,但我不确定它是哪个包。我读到的另一篇文章说我必须从包管理器安装gcc-multilibg++-multilib,但这些包不在可用包的选择范围内。

/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../libcygwin.a     when searching for -lcygwin
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../libcygwin.a     when searching for -lcygwin
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../libcygwin.a     when searching for -lcygwin
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lcygwin
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -ladvapi32
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lshell32
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -luser32
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lkernel32
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc_s.dll.a when     searching for -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lgcc_s
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0//libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     skipping incompatible /usr/lib/gcc/x86_64-pc-cygwin/6.4.0/libgcc.a when     searching for -lgcc
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/../../../../x86_64-pc-cygwin/bin/ld:     cannot find -lgcc
collect2: error: ld returned 1 exit status

谢谢。

【问题讨论】:

    标签: mingw mingw32


    【解决方案1】:

    正如你所说,{gcc|g++}-mulitlib 软件包不是由 cygwin 提供的 包管理器。

    要构建 32 位 C++ 目标,请安装包 mingw64-i686-gcc-g++,它 是 32 位目标的 mingw64 交叉编译器。然后用 编译器/usr/bin/i686-w64-mingw32-g++。不需要-m32 选项。

    【讨论】:

    • i686-w64-mingw32-gcc.exe 在 64 位 cygwin 中为我工作
    • 这对我有用,但我也必须使用-static,因为找不到库!
    猜你喜欢
    • 2015-01-31
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多