编译C程序时,如何在Clang中解决此链接问题



我正在尝试用clang编译C程序。在构建时,它显示错误消息链接器命令无法使用退出代码1执行。

我该如何解决?

我正在使用Windows10。我已经安装了最新版本的LLVM。我正在尝试使用命令行编译程序。

// main.c
#include <stdio.h>
int main()
{
    printf("hello");
    return 0;
}

我正在使用此命令

clang main.c  -o main.exe -v

我遇到了一个错误:

   "C:\Program Files\LLVM\bin\clang.exe" -cc1 -triple x86_64-pc-windows-msvc19.11.0 -emit-obj -mrelax-all -mincremental-linker-compatible -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model pic -pic-level 2 -mthread-model posix -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb -momit-leaf-frame-pointer -v -resource-dir "C:\Program Files\LLVM\lib\clang\7.1.0" -internal-isystem "C:\Program Files\LLVM\lib\clang\7.1.0\include" -internal-isystem "C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Tools\MSVC\14.16.27023\include" -internal-isystem "C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt" -internal-isystem "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared" -internal-isystem "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um" -internal-isystem "C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt" -fdebug-compilation-dir "C:\Users\amith.ks\Desktop" -ferror-limit 19 -fmessage-length 120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.11 -fdelayed-template-parsing -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o "C:\Users\amith.ks\AppData\Local\Temp\main-ecf8c2.o" -x c main.c
clang -cc1 version 7.1.0 based upon LLVM 7.1.0 default target x86_64-pc-win32
#include "..." search starts here:
#include <...> search starts here:
 C:Program FilesLLVMlibclang7.1.0include
 C:Program Files (x86)Microsoft Visual Studio2017WDExpressVCToolsMSVC14.16.27023include
 C:Program Files (x86)Windows Kits10Include10.0.17763.0ucrt
 C:Program Files (x86)Windows Kits10include10.0.17763.0shared
 C:Program Files (x86)Windows Kits10include10.0.17763.0um
 C:Program Files (x86)Windows Kits10include10.0.17763.0winrt
End of search list.
 "link.exe" -out:main.exe -defaultlib:libcmt "-libpath:C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Tools\MSVC\14.16.27023\lib\x64" "-libpath:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\ucrt\x64" "-libpath:C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64" -nologo "C:\Users\amith.ks\AppData\Local\Temp\main-ecf8c2.o"
clang.exe: error: unable to execute command: program not executable
clang.exe: error: linker command failed with exit code 1 (use -v to see invocation)

我无法获得该链接器错误。它在寻找什么?

link.exe 是Microsoft Visual C 'S(MSVC(链接器。它不是clang,您应该通过安装Visual C 进行安装。

请注意, link.exe 不一定需要在路径上,clang似乎具有一些自动检测功能。

如果已经安装了,这可能意味着Clang无法找到您的MSVC安装。在这种情况下,使用MSVC安装目录更新路径,或在使用Clang之前调用 vcvarsall.bat 可以解决您的问题。

我不确定这个答案。但是,Visual Studio社区和Express Edition之间存在很多差异。

我安装了Visual Studio社区和依赖关系工具,例如MSVC,Windows SDK等,并将link.exe添加到%PATH%中。一切都很好。

相关内容

最新更新