How to install Visual Studio Code ms-vscode.cpptools extension?

Does anyone have experiences with ms-vscode.cpptools?

I’ve installed the extension yet, but it doesn’t work. code complains:

Unable to start the C/C++ language server. IntelliSense features will be disabled. Error: Launching server using command /home/palik/.vscode/extensions/ms-vscode.cpptools-0.30.0-insiders4/bin/cpptools failed.

Even in shell the executable doesn’t run:

[palik@nixme:~/.vscode/extensions/ms-vscode.cpptools-0.30.0-insiders4]$ bin/cpptools
bash: bin/cpptools: No such file or directory

If you are lucky, then you can patchelf the systems interpreter into that binary or any other binary pulled in via that plugin.

You might need to repeat those steps on a semiregular basis to the new interpreter when the old one got GC’d.

1 Like

Thank you, @NobbZ!
patchelf solved the issue for me in this way:

[palik@nixme:~/.vscode/extensions/ms-vscode.cpptools-0.30.0-insiders4]$ ldd bin/cpptools                    
        linux-vdso.so.1 (0x00007ffd1e558000)
        libm.so.6 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/libm.so.6 (0x00007f517a2af000)
        libpthread.so.0 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/libpthread.so.0 (0x00007f517a28e000)
        libc.so.6 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/libc.so.6 (0x00007f517a0d8000)
        libdl.so.2 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/libdl.so.2 (0x00007f517a0d3000)
        librt.so.1 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/librt.so.1 (0x00007f517a0c9000)
        libgcc_s.so.1 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/libgcc_s.so.1 (0x00007f5179eb3000)
        /lib64/ld-linux-x86-64.so.2 => /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib64/ld-linux-x86-64.so.2 (0x00007f517a447000)
[palik@nixme:~/.vscode/extensions/ms-vscode.cpptools-0.30.0-insiders4]$ patchelf --set-interpreter /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib/libm.so.6 ./bin/cpptools
...
[palik@nixme:~/.vscode/extensions/ms-vscode.cpptools-0.30.0-insiders4]$ patchelf --set-interpreter /nix/store/wx1vk75bpdr65g6xwxbj4rw0pk04v5j3-glibc-2.27/lib64/ld-linux-x86-64.so.2 ./bin/cpptools
1 Like

As a more robust solution I use home-manager. It won’t overwrite existing directories, you’ll need to remove ms-vscode.cpptools... directory before running home-manager.

My config:

programs.vscode = {
    enable = true;
    package = pkgs.vscodium;
    extensions = (with import <unstable> {};
      with vscode-extensions; [
        matklad.rust-analyzer
        ms-python.python
        ms-vscode.cpptools
        #ms-vscode-remote.remote-ssh # won't work with vscodium
      ]);
  };
1 Like