diff --git a/src/driver/main.c b/src/driver/main.c index 2f28f51..abe6568 100644 --- a/src/driver/main.c +++ b/src/driver/main.c @@ -137,12 +137,37 @@ int main(int argc, char** argv) { return 1; } - // 调用 gcc 链接(MinGW 环境可用) + // 链接:优先 clang + lld(LLVM 自带),fallback gcc char cmd[1024]; + int ret = -1; + + // 构造 LLVM bin 路径(从 LLVM-C.dll 的位置推断) + char llvm_clang[512]; + snprintf(llvm_clang, sizeof(llvm_clang), + "D:/settings/Language/LLVM/bin/clang.exe"); + + // 1) 优先: clang + lld(零新依赖,已随 LLVM 安装) snprintf(cmd, sizeof(cmd), - "gcc \"%s\" -o \"%s\"", - obj_path, output); - int ret = system(cmd); + "\"%s\" -target x86_64-w64-windows-gnu -fuse-ld=lld \"%s\" -o \"%s\"", + llvm_clang, obj_path, output); + ret = system(cmd); + + // 2) 备选: 系统 PATH 中的 clang + if (ret != 0) { + snprintf(cmd, sizeof(cmd), + "clang -target x86_64-w64-windows-gnu -fuse-ld=lld \"%s\" -o \"%s\"", + obj_path, output); + ret = system(cmd); + } + + // 3) 最后 fallback: gcc + if (ret != 0) { + snprintf(cmd, sizeof(cmd), + "gcc \"%s\" -o \"%s\"", + obj_path, output); + ret = system(cmd); + } + if (ret != 0) { fprintf(stderr, "链接失败 (exit code %d)\n", ret); } else {