【发布时间】:2021-08-12 18:04:30
【问题描述】:
我使用 vs2017-win2016 映像在托管代理上创建了一个简单的 Azure DevOps 管道:
-
准备C文件[PowerShell任务]:
New-Item "test.c" -ItemType File -Value "int Foo() { return 123; }" -
构建 DLL [命令行任务]:
gcc -v -c test.c -m32 gcc -v -shared -o test.dll test.o -m32
但是第二步失败了:
C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64 -w64-mingw32/bin/ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/ …/…/…/x86_64-w64-mingw32/lib\libuser32.a 时搜索 -luser32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libuser32.a 时搜索 -luser32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -luser32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libkernel32.a 时搜索 -lkernel32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libkernel32.a 时搜索 -lkernel32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libkernel32.a 时搜索 -lkernel32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lkernel32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/搜索 -liconv 时的 x86_64-w64-mingw32/lib/libiconv.a C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libiconv.a 时搜索 -liconv C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/搜索 -liconv 时的 x86_64-w64-mingw32/lib/libiconv.a C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -liconv C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmingw32.a 时搜索 -lmingw32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libmingw32.a 时搜索 -lmingw32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmingw32.a 时搜索 -lmingw32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lmingw32 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libgcc_s.a 时搜索 -lgcc_s C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libgcc_s.a 时搜索 -lgcc_s C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libgcc_s.a 时搜索 -lgcc_s C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lgcc_s C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:在搜索 -lgcc 时跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/.../lib/gcc/x86_64-w64-mingw32/8.1.0/libgcc.a C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:在搜索 -lgcc 时跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/.../lib/gcc/x86_64-w64-mingw32/8.1.0\libgcc.a C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:在搜索 -lgcc 时跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/.../lib/gcc/x86_64-w64-mingw32/8.1.0/libgcc.a C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lgcc C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmoldname.a 时搜索 -lmoldname C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libmoldname.a 时搜索 -lmoldname C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmoldname.a 时搜索 -lmoldname C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lmoldname C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmingwex.a 时搜索 -lmingwex C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libmingwex.a 时搜索 -lmingwex C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmingwex.a 时搜索 -lmingwex C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lmingwex C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmsvcrt.a 时搜索 -lmsvcrt C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib\libmsvcrt.a 时搜索 -lmsvcrt C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe:跳过不兼容的 C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/ x86_64-w64-mingw32/lib/libmsvcrt.a 时搜索 -lmsvcrt C:/ProgramData/Chocolatey/lib/mingw/tools/install/mingw64/bin/…/lib/gcc/x86_64-w64-mingw32/8.1.0/…/…/…/…/x86_64-w64-mingw32/bin /ld.exe: 找不到 -lmsvcrt
collect2.exe:错误:ld 返回 1 个退出状态
我认为托管代理上的 MinGW 设置不正确,导致无法使用 -m32 选项,因此无法使用 gcc 构建 32 位 DLL。
网上有很多关于类似问题的问题,但我无法从他们那里了解我究竟需要在 64 位 Windows 上做什么才能使 gcc 与 -m32 开关一起工作并构建 32 位 DLL。
虽然我使用 Azure DevOps,但最好通过 choco 或类似的方式(即通过自动化工具)安装所需的软件。
【问题讨论】:
标签: windows gcc azure-pipelines