From 3984037c9824d751d54de001af2c06be6743665f Mon Sep 17 00:00:00 2001 From: Aofei Sheng Date: Sun, 16 Jun 2024 22:18:20 +0800 Subject: [PATCH] build: force use of LLVM Linker (lld) and fix usage of -dead_strip on Linux --- internal/build/build.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/internal/build/build.go b/internal/build/build.go index c8744e42..2fba905e 100644 --- a/internal/build/build.go +++ b/internal/build/build.go @@ -286,14 +286,19 @@ func linkMainPkg(pkg *packages.Package, pkgs []*aPackage, runtimeFiles []string, if app == "" { app = filepath.Join(conf.BinPath, name+conf.AppExt) } - const N = 5 + const N = 6 args := make([]string, N, len(pkg.Imports)+len(runtimeFiles)+(N+1)) args[0] = "-o" args[1] = app args[2] = "-Wno-override-module" - args[3] = "-Xlinker" - args[4] = "-dead_strip" - //args[5] = "-O2" + args[3] = "-fuse-ld=lld" + args[4] = "-Xlinker" + if runtime.GOOS == "darwin" { // ld64.lld (macOS) + args[5] = "-dead_strip" + } else { // ld.lld (Unix), lld-link (Windows), wasm-ld (WebAssembly) + args[5] = "--gc-sections" + } + //args[6] = "-O2" needRuntime := false needPyInit := false packages.Visit([]*packages.Package{pkg}, nil, func(p *packages.Package) {