c - 编译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)
我无法获得该链接器的外观..
解决方案
link.exe
是 Microsoft Visual C++ 链接器。它不附带 clang,您应该通过安装 Visual C++ 来安装它。
请注意,link.exe 不一定需要在 PATH 中,clang 似乎具有一些自动检测功能。
如果它已经安装,这可能意味着 clang 无法找到您的 MSVC 安装。在这种情况下,使用 MSVC 安装目录更新 PATH,或在使用 clang 之前调用 vcvarsall.bat 可以解决您的问题。
推荐阅读
- python - 如何允许在 Django 表单输入中返回?
- android - 由于 crashlytics build.gradle 错误,在 android 模拟器中运行颤振应用程序
- python - OCSP 请求生成器
- computer-science - 对三个输入数字进行排序
- python - 如何检测文件已被 logrotate 旋转?
- python - 根据多个条件过滤数据框结果
- kubernetes - 使用 Azure Kubernetes 服务上托管的 HTTPS API 在 GET 和 POST 期间出现 CORS 问题
- javascript - Webpack 模块联合热重载应用之间
- python - 如何在熊猫中写入加入列表的结果?
- regex - 用于截断文件名的正则表达式