首页 > 解决方案 > 编译ac程序时如何解决clang中的链接器问题?

问题描述

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

如何解决这个问题?

我使用的是 Windows 10。我已经安装了 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 Files\LLVM\lib\clang\7.1.0\include
 C:\Program Files (x86)\Microsoft Visual Studio\2017\WDExpress\VC\Tools\MSVC\14.16.27023\include
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt
 C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\shared
 C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\um
 C:\Program Files (x86)\Windows Kits\10\include\10.0.17763.0\winrt
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)

我无法获得该链接器的外观..

标签: c

解决方案


link.exe是 Microsoft Visual C++ 链接器。它不附带 clang,您应该通过安装 Visual C++ 来安装它。

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

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


推荐阅读