Public bug reported:

Building with clang++ searches /usr/lib/gcc/x86_64-linux-gnu/14/ which
causes clang++ to not be able to find the standard library headers let
alone link. This is because clang seems to just pick the newest looking
installed version based on what paths it sees. The /14/ directory exists
because I have installed emacs-pgtk which pulls in libgccjit0 which
pulls in libgcc-14-dev which causes all the headache. I ran into this on
22.04 with pulling in libgccjit0 to build emacs manually, which I worked
around by using a different library version.

Ubuntu clang version 18.1.3 (1ubuntu1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/14
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/14
Candidate multilib: .;@m64
Selected multilib: .;@m64
 "/usr/lib/llvm-18/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj 
-mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend 
-disable-llvm-verifier -discard-value-names -main-file-name main.cpp 
-mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all 
-fmath-errno -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/ubuntu/dumbtest -v 
-fcoverage-compilation-dir=/home/ubuntu/dumbtest -resource-dir 
/usr/lib/llvm-18/lib/clang/18 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++ 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/x86_64-linux-gnu
 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/backward 
-internal-isystem /usr/lib/llvm-18/lib/clang/18/include -internal-isystem 
/usr/local/include -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include 
-internal-externc-isystem /usr/include/x86_64-linux-gnu 
-internal-externc-isystem /include -internal-externc-isystem /usr/include 
-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/main-92a14c.o -x c++ main.cpp
clang -cc1 version 18.1.3 based upon LLVM 18.1.3 default target 
x86_64-pc-linux-gnu
ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/x86_64-linux-gnu"
ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/backward"
ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++
 /usr/lib/llvm-18/lib/clang/18/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
main.cpp:1:10: fatal error: 'iostream' file not found
    1 | #include <iostream>
      |          ^~~~~~~~~~
1 error generated.

When not including the standard template library the following bit after
"End of search list." differs as per below.

 "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m 
elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out 
/lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/crtbeginS.o 
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/14 
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../lib64 
-L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu 
-L/usr/lib/../lib64 -L/usr/lib/llvm-18/bin/../lib -L/lib -L/usr/lib 
/tmp/main-2fcfb2.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o
/usr/bin/ld: cannot find -lstdc++: No such file or directory
clang++: error: linker command failed with exit code 1 (use -v to see 
invocation)

I am on WSL but I doubt that would make a difference.

ProblemType: Bug
DistroRelease: Ubuntu 24.04
Package: clang 1:18.0-59~exp2
Uname: Linux 5.15.153.1-microsoft-standard-WSL2 x86_64
ApportVersion: 2.28.1-0ubuntu3.1
Architecture: amd64
CasperMD5CheckResult: unknown
CloudArchitecture: x86_64
CloudID: none
CloudName: none
CloudPlatform: none
CloudSubPlatform: config
Date: Thu Aug 15 18:42:03 2024
ProcEnviron:
 LANG=en_US.UTF-8
 PATH=(custom, no user)
 SHELL=/bin/bash
 TERM=xterm-256color
 XDG_RUNTIME_DIR=<set>
SourcePackage: llvm-defaults
UpgradeStatus: No upgrade log present (probably fresh install)

** Affects: llvm-defaults (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: amd64 apport-bug noble wayland-session

** Summary changed:

- Unable to link any executable using libstdc++
+ libgcc-14-dev breaks clang++ build and link

** Description changed:

  Building with clang++ searches /usr/lib/gcc/x86_64-linux-gnu/14/ which
  causes clang++ to not be able to find the standard library headers let
  alone link. This is because clang seems to just pick the newest looking
  installed version based on what paths it sees. The /14/ directory exists
  because I have installed emacs-pgtk which pulls in libgccjit0 which
  pulls in libgcc-14-dev which causes all the headache. I ran into this on
  22.04 with pulling in libgccjit0 to build emacs manually, which I worked
  around by using a different library version.
- 
  
  Ubuntu clang version 18.1.3 (1ubuntu1)
  Target: x86_64-pc-linux-gnu
  Thread model: posix
  InstalledDir: /usr/bin
  Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/13
  Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/14
  Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/14
  Candidate multilib: .;@m64
  Selected multilib: .;@m64
-  "/usr/lib/llvm-18/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj 
-mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend 
-disable-llvm-verifier -discard-value-names -main-file-name main.cpp 
-mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all 
-fmath-errno -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/ubuntu/dumbtest -v 
-fcoverage-compilation-dir=/home/ubuntu/dumbtest -resource-dir 
/usr/lib/llvm-18/lib/clang/18 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++ 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/x86_64-linux-gnu
 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/backward 
-internal-isystem /usr/lib/llvm-18/lib/clang/18/include -internal-isystem 
/usr/local/include -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include 
-internal-externc-isystem /usr/include/x86_64-linux-gnu 
-internal-externc-isystem /include -internal-externc-isystem /usr/include 
-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/main-92a14c.o -x c++ main.cpp
+  "/usr/lib/llvm-18/bin/clang" -cc1 -triple x86_64-pc-linux-gnu -emit-obj 
-mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend 
-disable-llvm-verifier -discard-value-names -main-file-name main.cpp 
-mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all 
-fmath-errno -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/ubuntu/dumbtest -v 
-fcoverage-compilation-dir=/home/ubuntu/dumbtest -resource-dir 
/usr/lib/llvm-18/lib/clang/18 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++ 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/x86_64-linux-gnu
 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/backward 
-internal-isystem /usr/lib/llvm-18/lib/clang/18/include -internal-isystem 
/usr/local/include -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include 
-internal-externc-isystem /usr/include/x86_64-linux-gnu 
-internal-externc-isystem /include -internal-externc-isystem /usr/include 
-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/main-92a14c.o -x c++ main.cpp
  clang -cc1 version 18.1.3 based upon LLVM 18.1.3 default target 
x86_64-pc-linux-gnu
  ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/x86_64-linux-gnu"
  ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/backward"
  ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include"
  ignoring nonexistent directory "/include"
  #include "..." search starts here:
  #include <...> search starts here:
-  /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++
-  /usr/lib/llvm-18/lib/clang/18/include
-  /usr/local/include
-  /usr/include/x86_64-linux-gnu
-  /usr/include
+  /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++
+  /usr/lib/llvm-18/lib/clang/18/include
+  /usr/local/include
+  /usr/include/x86_64-linux-gnu
+  /usr/include
  End of search list.
  main.cpp:1:10: fatal error: 'iostream' file not found
-     1 | #include <iostream>
-       |          ^~~~~~~~~~
+     1 | #include <iostream>
+       |          ^~~~~~~~~~
  1 error generated.
  
  When not including the standard template library the following bit after
  "End of search list." differs as per below.
  
-  "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m 
elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out 
/lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/crtbeginS.o 
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/14 
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../lib64 
-L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu 
-L/usr/lib/../lib64 -L/usr/lib/llvm-18/bin/../lib -L/lib -L/usr/lib 
/tmp/main-2fcfb2.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o
+  "/usr/bin/ld" -z relro --hash-style=gnu --build-id --eh-frame-hdr -m 
elf_x86_64 -pie -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o a.out 
/lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/crtbeginS.o 
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/14 
-L/usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../lib64 
-L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu 
-L/usr/lib/../lib64 -L/usr/lib/llvm-18/bin/../lib -L/lib -L/usr/lib 
/tmp/main-2fcfb2.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc 
/usr/bin/../lib/gcc/x86_64-linux-gnu/14/crtendS.o /lib/x86_64-linux-gnu/crtn.o
  /usr/bin/ld: cannot find -lstdc++: No such file or directory
  clang++: error: linker command failed with exit code 1 (use -v to see 
invocation)
  
- Release information:
- 
- No LSB modules are available.
- Description:    Ubuntu 24.04 LTS
- Release:        24.04
+ I am on WSL but I doubt that would make a difference.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 24.04
  Package: clang 1:18.0-59~exp2
  Uname: Linux 5.15.153.1-microsoft-standard-WSL2 x86_64
  ApportVersion: 2.28.1-0ubuntu3.1
  Architecture: amd64
  CasperMD5CheckResult: unknown
  CloudArchitecture: x86_64
  CloudID: none
  CloudName: none
  CloudPlatform: none
  CloudSubPlatform: config
  Date: Thu Aug 15 18:42:03 2024
  ProcEnviron:
-  LANG=en_US.UTF-8
-  PATH=(custom, no user)
-  SHELL=/bin/bash
-  TERM=xterm-256color
-  XDG_RUNTIME_DIR=<set>
+  LANG=en_US.UTF-8
+  PATH=(custom, no user)
+  SHELL=/bin/bash
+  TERM=xterm-256color
+  XDG_RUNTIME_DIR=<set>
  SourcePackage: llvm-defaults
  UpgradeStatus: No upgrade log present (probably fresh install)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2077130

Title:
  libgcc-14-dev breaks clang++ build and link

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/llvm-defaults/+bug/2077130/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to