【问题标题】:linker error of clang on mingw32mingw32 上 clang 的链接器错误
【发布时间】:2012-04-11 15:13:18
【问题描述】:

我是 clang 和 llvm 以及这个邮件论坛的新手。我正在尝试使用“mingw32 2.9 版的cland 二进制文件”和“mingw32 2.9 版的llvm 二进制文件”在我的Windows xp 32 位系统上构建cland。我遵循以下步骤:

  1. 下载mingw到目录(C:/MinGW)
  2. 下载“用于 mingw32 的 clang2.9 二进制文件”和“用于 mingw32 的 llvm-2.9 二进制文件”
  3. 将两者解压到 mingw (C:/MinGW) 的同一目录中
  4. 将路径 C:/MinGW/bin 设置为 PATH 环境。 然后我写了一个简单的代码

    #包括
    int main()
    {
    printf("你好世界\n");
    返回 0;
    }

然后编译代码

clang hello.cpp -o hello.exe
它编译得很好
但是当我尝试执行它时
叮当你好.exe 它给出了以下错误

**************错误********* *****
hello.exe:crt1.c:(.text+0x280): 多重定义mainCRTStartup' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:crt1.c:(.text+0x280): firs t defined here hello.exe:crt1.c:(.text+0x2a0): multiple definition ofWinMainCRTStartup' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:crt1.c:(.text+0x2a0): 冷杉 t 在这里定义 hello.exe:crt1.c:(.text+0x2c0): 多重定义atexit' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:crt1.c:(.text+0x2c0): firs t defined here hello.exe:crt1.c:(.text+0x2d0): multiple definition ofonexit' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:crt1.c:(.text+0x2d0): 冷杉 t 在这里定义 hello.exe:cygming-crtbegin.c:(.text+0x2e0): 多重定义__gcc_regist er_frame' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtbegin.o:cygming-crtbegin.c:(.text+0x0): first defined here hello.exe:cygming-crtbegin.c:(.text+0x36c): multiple definition of_gcc_deregi ster_frame' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtbegin.o:cygming-crtbegin.c:(.text+0x8c) : 首先定义在这里 hello.exe:crt1.c:(.bss+0x4): _argc' c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:crt1.c:(.bss+0x4): first d efined here hello.exe:crt1.c:(.bss+0x0): multiple definition of_argv'的多重定义 c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../crt2.o:crt1.c:(.bss+0x0): 第一个d 在这里定义 c:/mingw/bin/../lib/gcc/mingw32/4.6.2/crtbegin.o:cygming-crtbegin.c:(.text+0x85) : 未定义的对 `_Jv_RegisterClasses' 的引用 collect2: ld 返回 1 个退出状态 铿锵声:错误: 链接器 (通过 gcc) 命令 失败的 和 出口 代码 1 (采用 -v 到 看 调用) *****************************]
我该如何解决这个问题?

【问题讨论】:

    标签: mingw32


    【解决方案1】:

    这里是如何在 Windows 上从源代码编译 Clang 的链接,文章讨论了 Windows 上的 Objective-C 和 Clang,你可以放心地忽略它并使用描述的技术来构建 Clang。生成的编译器将毫无问题地编译您的 C++ 代码。或者你可以下载作者编译的 Clang 3.1:

    http://solarianprogrammer.com/2012/03/21/clang-objective-c-windows/

    【讨论】: