Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't find the C++ standard library #1419

Open
3 tasks done
llzzzzoo opened this issue Feb 25, 2025 · 13 comments
Open
3 tasks done

Can't find the C++ standard library #1419

llzzzzoo opened this issue Feb 25, 2025 · 13 comments
Labels
bug Something isn't working clangd Clangd(lsp) related issues lsp LSP related issues platform:windows

Comments

@llzzzzoo
Copy link

Version confirmation

  • Confirm

Following prerequisites

  • Confirm

Not a user config issue

  • Confirm

Neovim version

NVIM v0.10.3

Operating system/version

Windows 11

Terminal name/version

PowerShell 7.5.0

$TERM environment variable

No response

Branch info

main (Default/Latest)

Fetch Preferences

SSH (use_ssh = true)

Affected language servers

any

How to reproduce the issue

I have the same problem as the link below. I can run the cpp file normally from the terminal, but the compiler still throws an error.
#1366
How can I finish that? Thank you so much.

Actual behavior

Image

Expected behavior

Eliminate these error messages.

Support info

Image

Image

Logs

Additional information

No response

@llzzzzoo llzzzzoo added bug Something isn't working lsp LSP related issues labels Feb 25, 2025
@ayamir
Copy link
Owner

ayamir commented Feb 26, 2025

It's weird, seems g++ and gcc can be indexed both...

@llzzzzoo
Copy link
Author

Yes. And it's the running outcome.

Image

@ayamir
Copy link
Owner

ayamir commented Feb 26, 2025

Maybe this will help you: #370

@llzzzzoo
Copy link
Author

  1. I update the gcc to the newest. But it still can't work.

Image

  1. Referring to this link, I tried to edit the relevant file LSP.lua. But with the passage of time, the structure of this file has changed and I'm not sure how to change it.

Image

@ayamir
Copy link
Owner

ayamir commented Feb 27, 2025

You can install latest llvm and gcc/g++ toolchain on mingw. Our configuration will try to find the binary automatically:

"--query-driver=" .. get_binary_path_list({ "clang++", "clang", "gcc", "g++" }),

@llzzzzoo
Copy link
Author

llzzzzoo commented Mar 1, 2025

That's weird. Today I started it for the first time with no problem. But when I re-enter neovm it gives me errors, even if I have the latest llvm and gcc.

The first time

Image

Now

Image

@Jint-lzxy
Copy link
Collaborator

Hi @llzzzzoo! My bad for jumpin in late, but can u try compiling this file (test.cpp):

#include <any>
#include <list>

int main() { std::any any{std::list<int>{}}; }

with:

clang++ -std=gnu++17 test.cpp -v

and drop the compiler output here? Just wanna check if it's an issue with library search paths or smth else 🤔 u should see smth kinda like this:

FreeBSD clang version 18.1.5 (https://github.com/llvm/llvm-project.git llvmorg-18.1.5-0-g617a15a9eac9)
Target: x86_64-unknown-freebsd14.1
Thread model: posix
InstalledDir: /usr/bin
 "/usr/bin/clang++" -cc1 -triple x86_64-unknown-freebsd14.1 -emit-obj -mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model static -mframe-pointer=all -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/home/jint/Desktop -v -fcoverage-compilation-dir=/home/jint/Desktop -resource-dir /usr/lib/clang/18 -internal-isystem /usr/include/c++/v1 -internal-isystem /usr/lib/clang/18/include -internal-externc-isystem /usr/include -std=gnu++17 -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-829d36.o -x c++ test.cpp
clang -cc1 version 18.1.5 based upon LLVM 18.1.5 default target x86_64-unknown-freebsd14.1
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/v1
 /usr/lib/clang/18/include
 /usr/include
End of search list.
 "/usr/bin/ld" --eh-frame-hdr -dynamic-linker /libexec/ld-elf.so.1 --hash-style=both --enable-new-dtags -o a.out /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o -L/usr/lib /tmp/test-829d36.o -lc++ -lm -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/crtend.o /usr/lib/crtn.o

lmk what u get!

@Jint-lzxy Jint-lzxy added platform:windows clangd Clangd(lsp) related issues labels Mar 3, 2025
@llzzzzoo
Copy link
Author

llzzzzoo commented Mar 3, 2025

OK.

Image

Here is the output.

clang version 18.1.8
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: D:\ProgramFiles\software\LLVM\bin
clang++: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-
found]
 "D:\\ProgramFiles\\software\\LLVM\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.33.0 -emit-obj -mrelax-all -mincr
emental-linker-compatible -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -ma
in-file-name test.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-ma
th -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic "-fdebug-compilation-dir=C:\\Users\\Lzo\\Desk
top\\code\\cpp" -v "-fcoverage-compilation-dir=C:\\Users\\Lzo\\Desktop\\code\\cpp" -resource-dir "D:\\ProgramFiles\\software\
\LLVM\\lib\\clang\\18" -internal-isystem "D:\\ProgramFiles\\software\\LLVM\\lib\\clang\\18\\include" -internal-isystem "C:/Pr
ogram Files/Microsoft Visual Studio 10.0/VC/include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 9.0/VC/inclu
de" -internal-isystem "C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include" -internal-isystem "C:/Program Fil
es/Microsoft Visual Studio 8/VC/include" -internal-isystem "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include
" -std=gnu++17 -fdeprecated-macro -ferror-limit 19 -fmessage-length=125 -fno-use-cxa-atexit -fms-extensions -fms-compatibilit
y -fms-compatibility-version=19.33 -fskip-odr-check-in-gmf -fdelayed-template-parsing -fcxx-exceptions -fexceptions -fcolor-d
iagnostics -faddrsig -o "C:\\Users\\Lzo\\AppData\\Local\\Temp\\test-506500.o" -x c++ test.cpp
clang -cc1 version 18.1.8 based upon LLVM 18.1.8 default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 10.0/VC/include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 9.0/VC/PlatformSDK/Include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/include"
ignoring nonexistent directory "C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/Include"
#include "..." search starts here:
#include <...> search starts here:
 D:\ProgramFiles\software\LLVM\lib\clang\18\include
End of search list.
 "link.exe" -out:a.exe -defaultlib:libcmt -defaultlib:oldnames "-libpath:lib\\amd64" "-libpath:atlmfc\\lib\\amd64" "-libpath:
E:\\Windows Kits\\10\\Lib\\10.0.22621.0\\ucrt\\x64" "-libpath:E:\\Windows Kits\\10\\Lib\\10.0.22621.0\\um\\x64" "-libpath:D:\
\ProgramFiles\\software\\LLVM\\lib\\clang\\18\\lib\\windows" -nologo "C:\\Users\\Lzo\\AppData\\Local\\Temp\\test-506500.o"   
clang++: error: unable to execute command: program not executable
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

@Jint-lzxy
Copy link
Collaborator

Here is the output.

Thanks! First off, did u install our config using the install script? Cuz that sets up all the necessary packages for u. If yes, go to 1, otherwise skip to 2.

  1. Just to be sure, is ur gcc coming from MinGW? Run g++ -std=gnu++17 test.cpp -v and if it shows x86_64-pc-windows-mingw, then ur good. I'd highly suggest uninstalling LLVM (unless u actually need it) cuz it looks like u got the wrong version (MSVC-based instead of MinGW-based). That's probs why clang is throwing those "ignoring nonexistent directory" errors. It's trying very hard to find MSVC, but I'm speculating u don't even have it installed. If u still need LLVM, u got three ways to fix this:
    • 1.1 Change query_driver to point to ur g++ install. Edit lua/user/configs/lsp-servers/clangd.lua:
local function switch_source_header_splitcmd(bufnr, splitcmd)
	bufnr = require("lspconfig").util.validate_bufnr(bufnr)
	local clangd_client = require("lspconfig").util.get_active_client_by_name(bufnr, "clangd")
	local params = { uri = vim.uri_from_bufnr(bufnr) }
	if clangd_client then
		clangd_client.request("textDocument/switchSourceHeader", params, function(err, result)
			if err then
				error(tostring(err))
			end
			if not result then
				vim.notify("Corresponding file can’t be determined", vim.log.levels.ERROR, { title = "LSP Error!" })
				return
			end
			vim.api.nvim_command(splitcmd .. " " .. vim.uri_to_fname(result))
		end)
	else
		vim.notify(
			"Method textDocument/switchSourceHeader is not supported by any active server on this buffer",
			vim.log.levels.ERROR,
			{ title = "LSP Error!" }
		)
	end
end

local function get_binary_path_list(binaries)
	local path_list = {}
	for _, binary in ipairs(binaries) do
		local path = vim.fn.exepath(binary)
		if path ~= "" then
			table.insert(path_list, path)
		end
	end
	return table.concat(path_list, ",")
end

-- https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/configs/clangd.lua
return function(options)
	require("lspconfig").clangd.setup({
		on_attach = options.on_attach,
		capabilities = vim.tbl_deep_extend("keep", { offsetEncoding = { "utf-16", "utf-8" } }, options.capabilities),
		single_file_support = true,
		cmd = {
			"clangd",
			"-j=12",
			"--enable-config",
			"--background-index",
			"--pch-storage=memory",
			-- You MUST set this arg ↓ to your c/cpp compiler location (if not included)!
			"--query-driver=" .. get_binary_path_list({ "gcc", "g++" }),
			"--clang-tidy",
			"--all-scopes-completion",
			"--completion-style=detailed",
			"--header-insertion-decorators",
			"--header-insertion=iwyu",
			"--limit-references=3000",
			"--limit-results=350",
		},
		commands = {
			ClangdSwitchSourceHeader = {
				function()
					switch_source_header_splitcmd(0, "edit")
				end,
				description = "Open source/header in current buffer",
			},
			ClangdSwitchSourceHeaderVSplit = {
				function()
					switch_source_header_splitcmd(0, "vsplit")
				end,
				description = "Open source/header in a new vsplit",
			},
			ClangdSwitchSourceHeaderSplit = {
				function()
					switch_source_header_splitcmd(0, "split")
				end,
				description = "Open source/header in a new split",
			},
		},
	})
end

That tells clangd where ur g++ is, so it stops looking for MSVC.

  • 1.2 Instead of the default LLVM dist, u need a version that works properly with MinGW. Make sure u get the right one (eg, search for smth like "LLVM MinGW build" and install that).
  • 1.3 (Last Resort) If u actually wanna use MSVC, install it from here and make sure u check the C++ development environment during setup. But fr this is only if u really need it.
  1. If u skipped the install script, I'd strongly recommend running it. It saves u a ton of trouble later. But if u don't wanna, ur best bet is to just install MSVC from here and make sure u check the C++ development environment during setup.

Note

Installing anything non-MSVC without a package manager is a nightmare, so I wouldn't even try it unless u really have to.

@llzzzzoo
Copy link
Author

llzzzzoo commented Mar 4, 2025

Thanks for your reply. I installed this config by your script.

Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/ayamir/nvimdots/HEAD/scripts/install.ps1'))
  1. After I entered g++ -std=gnu++17 test.cpp -v, I got these.
Using built-in specs.
COLLECT_GCC=C:\ProgramFiles\configuration\C++\mingw64\bin\g++.exe
COLLECT_LTO_WRAPPER=C:/ProgramFiles/configuration/C++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/14.2.0/lto-wrap
per.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-14.2.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x8
6_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1420-win32-seh-ucrt-rt_v12-rev1/mingw64 --ena
ble-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-thread
s=win32 --enable-libstdcxx-threads=yes --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-
checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem
-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --dis
able-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona
 --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-stat
ic --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w6
4-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-se
h-rev1, Built by MinGW-Builds project' --with-bugurl=https://github.com/niXman/mingw-builds LD_FOR_TARGET=/c/buildr
oot/x86_64-1420-win32-seh-ucrt-rt_v12-rev1/mingw64/bin/ld.exe --with-boot-ldflags='-pipe -fno-ident -L/c/buildroot/
x86_64-1420-win32-seh-ucrt-rt_v12-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/bui
ldroot/prerequisites/x86_64-w64-mingw32-static/lib  -Wl,--disable-dynamicbase -static-libstdc++ -static-libgcc'    
Thread model: win32
Supported LTO compression algorithms: zlib
gcc version 14.2.0 (x86_64-win32-seh-rev1, Built by MinGW-Builds project) 
COLLECT_GCC_OPTIONS='-std=gnu++17' '-v' '-shared-libgcc' '-mtune=core2' '-march=nocona' '-dumpdir' 'a-'
 C:/ProgramFiles/configuration/C++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/14.2.0/cc1plus.exe -quiet -v -ipre
fix C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/ -U_REENTRANT test.cpp -quie
t -dumpdir a- -dumpbase test.cpp -dumpbase-ext .cpp -mtune=core2 -march=nocona -std=gnu++17 -version -o C:\Users\Lz
o\AppData\Local\Temp\ccgysdfx.s
GNU C++17 (x86_64-win32-seh-rev1, Built by MinGW-Builds project) version 14.2.0 (x86_64-w64-mingw32)
        compiled by GNU C version 14.2.0, GMP version 6.2.1, MPFR version 4.1.0, MPC version 1.2.1, isl version isl
-0.25-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory "C:/ProgramFiles/configuration/C++/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/14
.2.0/include/c++"
ignoring duplicate directory "C:/ProgramFiles/configuration/C++/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/14
.2.0/include/c++/x86_64-w64-mingw32"
ignoring duplicate directory "C:/ProgramFiles/configuration/C++/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/14
.2.0/include/c++/backward"
ignoring duplicate directory "C:/ProgramFiles/configuration/C++/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/14
.2.0/include"
ignoring nonexistent directory "C:/buildroot/x86_64-1420-win32-seh-ucrt-rt_v12-rev1/mingw64D:/a/_temp/msys64/mingw6
4/lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../include"
ignoring duplicate directory "C:/ProgramFiles/configuration/C++/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/14
.2.0/include-fixed"
ignoring duplicate directory "C:/ProgramFiles/configuration/C++/mingw64/lib/gcc/../../lib/gcc/x86_64-w64-mingw32/14
.2.0/../../../../x86_64-w64-mingw32/include"
ignoring nonexistent directory "C:/buildroot/x86_64-1420-win32-seh-ucrt-rt_v12-rev1/mingw64/mingw/include"
#include "..." search starts here:
#include <...> search starts here:
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/x86_64-w64-mingw32 
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/backward
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/include
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/include-fixed
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/
include
End of search list.
Compiler executable checksum: dd1e8e4454cb75d49fca27134f8c4945
COLLECT_GCC_OPTIONS='-std=gnu++17' '-v' '-shared-libgcc' '-mtune=core2' '-march=nocona' '-dumpdir' 'a-'
 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/
bin/as.exe -v -o C:\Users\Lzo\AppData\Local\Temp\ccCOmKtl.o C:\Users\Lzo\AppData\Local\Temp\ccgysdfx.s
GNU assembler version 2.43 (x86_64-w64-mingw32) using BFD version (GNU Binutils) 2.43
COMPILER_PATH=C:/ProgramFiles/configuration/C++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/14.2.0/;C:/ProgramFil
es/configuration/C++/mingw64/bin/../libexec/gcc/;C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w6
4-mingw32/14.2.0/../../../../x86_64-w64-mingw32/bin/
LIBRARY_PATH=C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/;C:/ProgramFiles/co
nfiguration/C++/mingw64/bin/../lib/gcc/;C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32
/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/;C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-
w64-mingw32/14.2.0/../../../../lib/;C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.
2.0/../../../../x86_64-w64-mingw32/lib/;C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32
/14.2.0/../../../
COLLECT_GCC_OPTIONS='-std=gnu++17' '-v' '-shared-libgcc' '-mtune=core2' '-march=nocona' '-dumpdir' 'a.'
 C:/ProgramFiles/configuration/C++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/14.2.0/collect2.exe -plugin C:/Pro
gramFiles/configuration/C++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/14.2.0/liblto_plugin.dll -plugin-opt=C:/P
rogramFiles/configuration/C++/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/14.2.0/lto-wrapper.exe -plugin-opt=-fre
solution=C:\Users\Lzo\AppData\Local\Temp\ccAYHvXs.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through
=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -pl
ugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-
opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-liconv -plugin-opt=-pass
-through=-lmingw32 -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmi
ngwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-lkernel32 --sysroot=C:/buildroot/x86_64-1420-wi
n32-seh-ucrt-rt_v12-rev1/mingw64 -m i386pep -Bdynamic C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_
64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib/crt2.o C:/ProgramFiles/configuration/C++/mingw64/bi
n/../lib/gcc/x86_64-w64-mingw32/14.2.0/crtbegin.o -LC:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64
-w64-mingw32/14.2.0 -LC:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc -LC:/ProgramFiles/configuration/C++/
mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib/../lib -LC:/ProgramFiles/config
uration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../lib -LC:/ProgramFiles/configuration/C++/mi
ngw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../../../x86_64-w64-mingw32/lib -LC:/ProgramFiles/configuration/C
++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/14.2.0/../../.. C:\Users\Lzo\AppData\Local\Temp\ccCOmKtl.o -lstdc++ -l
mingw32 -lgcc_s -lgcc -lmingwex -lmsvcrt -lkernel32 -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgc
c_s -lgcc -lmingwex -lmsvcrt -lkernel32 C:/ProgramFiles/configuration/C++/mingw64/bin/../lib/gcc/x86_64-w64-mingw32
/14.2.0/crtend.o
COLLECT_GCC_OPTIONS='-std=gnu++17' '-v' '-shared-libgcc' '-mtune=core2' '-march=nocona' '-dumpdir' 'a.'
  1. I deleted LLVM and used MSYS2 MINGW64 to reinstall gcc(MingGW-based) and modify the system path.
    Image
    Image

  2. It seems I don't have clanged.lua, thus I created it and used your template.
    Image
    Image

  3. I have a doubt whether I need to install LLVM(MingGW-based) and add it to the system path to solve this problem. By the way, I installed LLVM in MSYS MINGW64 and reused clang++ -std=gnu++17 test.cpp -v
    Image

Here is the output.

clang version 19.1.7
Target: x86_64-w64-windows-gnu
Thread model: posix
InstalledDir: C:/Program Files/msys/mingw64/bin
 "C:/Program Files/msys/mingw64/bin/clang++.exe" -cc1 -triple x86_64-w64-windows-gnu -emit-obj -dumpdir a- -disable-free -clear-ast-before-backend -disable-
llvm-verifier -discard-value-names -main-file-name test.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-roun
ding-math -mconstructor-aliases -mms-bitfields -funwind-tables=2 -fno-sized-deallocation -fno-use-init-array -target-cpu x86-64 -tune-cpu generic -debugger-
tuning=gdb -fdebug-compilation-dir=C:/Users/Lzo/Desktop/code/cpp -v -fcoverage-compilation-dir=C:/Users/Lzo/Desktop/code/cpp -resource-dir "C:/Program Files
/msys/mingw64/lib/clang/19" -internal-isystem "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++" -internal-isystem "C:/Program Files/msys/mingw6
4/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32" -internal-isystem "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/backward" -internal-isy
stem "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/14.2.0" -internal-isystem "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/1
4.2.0/x86_64-w64-mingw32" -internal-isystem "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/14.2.0/backward" -internal-isystem "C:/Program Fil
es/msys/mingw64/include/c++/14.2.0" -internal-isystem "C:/Program Files/msys/mingw64/include/c++/14.2.0/x86_64-w64-mingw32" -internal-isystem "C:/Program Fi
les/msys/mingw64/include/c++/14.2.0/backward" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++" -internal-isys
tem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/x86_64-w64-mingw32" -internal-isystem "C:/Program Files/msys/mingw64/lib/gc
c/x86_64-w64-mingw32/14.2.0/include/c++/backward" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2.0" -i
nternal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2.0/x86_64-w64-mingw32" -internal-isystem "C:/Program Files
/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2.0/backward" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14
.2.0/include/g++-v14.2" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2/x86_64-w64-mingw32" -internal-i
system "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2/backward" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc
/x86_64-w64-mingw32/14.2.0/include/g++-v14" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14/x86_64-w64-mi
ngw32" -internal-isystem "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14/backward" -internal-isystem "C:/Program Files/msys
/mingw64/lib/clang/19/include" -internal-isystem "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include" -internal-isystem "C:/Program Files/msys/mingw64
/x86_64-w64-mingw32/usr/include" -internal-isystem "C:/Program Files/msys/mingw64/include" -std=gnu++17 -fdeprecated-macro -ferror-limit 19 -fmessage-length
=156 -femulated-tls -fno-use-cxa-atexit -fgnuc-version=4.2.1 -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -exception-model=seh -fcolor-diagnostics 
-faddrsig -o C:/Users/Lzo/AppData/Local/Temp/test-3a5a11.o -x c++ test.cpp
clang -cc1 version 19.1.7 based upon LLVM 19.1.7 default target x86_64-w64-windows-gnu
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/x86_64-w64-mingw32"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/backward"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/14.2.0"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/14.2.0/x86_64-w64-mingw32"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include/c++/14.2.0/backward"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/x86_64-w64-mingw32"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/c++/backward"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2.0"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2.0/x86_64-w64-mingw32"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2.0/backward"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2/x86_64-w64-mingw32"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14.2/backward"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14/x86_64-w64-mingw32"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/include/g++-v14/backward"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/include"
ignoring nonexistent directory "C:/Program Files/msys/mingw64/x86_64-w64-mingw32/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 C:/Program Files/msys/mingw64/include/c++/14.2.0
 C:/Program Files/msys/mingw64/include/c++/14.2.0/x86_64-w64-mingw32
 C:/Program Files/msys/mingw64/include/c++/14.2.0/backward
 C:/Program Files/msys/mingw64/lib/clang/19/include
 C:/Program Files/msys/mingw64/include
End of search list.
 "C:/Program Files/msys/mingw64/bin/ld" -m i386pep -Bdynamic -o a.exe "C:/Program Files/msys/mingw64/lib/crt2.o" "C:/Program Files/msys/mingw64/lib/gcc/x86_
64-w64-mingw32/14.2.0/crtbegin.o" "-LC:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0" "-LC:/Program Files/msys/mingw64/x86_64-w64-mingw32/li
b" "-LC:/Program Files/msys/mingw64/x86_64-w64-mingw32/mingw/lib" "-LC:/Program Files/msys/mingw64/lib" C:/Users/Lzo/AppData/Local/Temp/test-3a5a11.o -lstdc
++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lm
svcrt -lkernel32 "C:/Program Files/msys/mingw64/lib/gcc/x86_64-w64-mingw32/14.2.0/crtend.o"
  1. I reopened my file in neovim, but it still had the same problem.
    Image

@Jint-lzxy
Copy link
Collaborator

I have a doubt whether I need to install LLVM(MingGW-based) and add it to the system path to solve this problem.

A general advice is if ur just using C++ u don't need it. But r u using any part of LLVM's compiler infrastructure like LLVM IR or specific compiler/diagnostics options? If not, just uninstall it lol cuz on Windows u usually gotta bootstrap LLVM urself so it knows where ur system headers are and fixes the search path.

It seems I don't have clanged.lua, thus I created it and used your template.

u don't need to modify anything lol just copy the code I attached above, and it'll automatically detect ur GCC install. And the file is called clangd.lua, not clanged.lua.

@llzzzzoo
Copy link
Author

Thank you so much.

  1. I have deleted msys2 and reinstalled it. This time I just installed gcc.
    Image

  2. I have found a clangd.exe you provided, does this file do anything?
    Image

  3. I realized that not only had I created the wrong filename before, but also the wrong location. So this time I created that file directly under both directories and copied exactly what you did.
    Image
    Image

  4. The problem still exists. But this time I found a strange problem, my command line and the command line in neovim typing clangd -version came up with different results.
    Image

@CharlesChiuGit
Copy link
Collaborator

4. The problem still exists. But this time I found a strange problem, my command line and the command line in neovim typing clangd -version came up with different results.

that's expected. since we define clangd in here.

this clangd in nvim is installed by mason.nvim in a virtual env, so it won't mess with other pkgs u installed on your host system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working clangd Clangd(lsp) related issues lsp LSP related issues platform:windows
Projects
None yet
Development

No branches or pull requests

4 participants