ldd는 libstdc++를 찾을 수 없다고 표시하지만 clang의 경우 사용할 수 있습니다. 이것이 어떻게 가능합니까?

ldd는 libstdc++를 찾을 수 없다고 표시하지만 clang의 경우 사용할 수 있습니다. 이것이 어떻게 가능합니까?

저는 Fedora 34를 실행하고 있습니다. 어떻게 이것이 가능합니까? (ldd는 libstdc++를 찾을 수 없지만 clang에 사용 가능하다고 표시합니다.)

$ ldd /opt/toolchains/gcc-rl78/bin/rl78-elf-gcc
         linux-gate.so.1 (0xf7f7d000)
         libstdc++.so.6 => not found
         libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf7f50000)
         libc.so.6 => /lib/libc.so.6 (0xf7d90000)
         /lib/ld-linux.so.2 (0xf7f7f0000)
$ ldd /opt/toolchains/llvm-rl78/bin/clang
/opt/toolchains/llvm-rl78/bin/clang: /lib64/libtinfo.so.5: no version information available (required by /opt/toolchains/llvm-rlvm-rl78/bin/clang)
         linux-vdso.so.1 (0x00007ffdc9397000)
         libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f4e3a062000)
         librt.so.1 => /lib64/librt.so.1 (0x00007f4e3a057000)
         libdl.so.2 => /lib64/libdl.so.2 (0x00007f4e3a050000)
         libtinfo.so.5 => /lib64/libtinfo.so.5 (0x000074e3a023000)
         libm.so.6 => /lib64/libm.so.6 (0x00007f4e39edf000)
         libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f4e39cc0000)
         libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4e39ca3000)
         libc.so.6 => /lib64/libc.so.6 (0x00007f4e39ad4000)
         /lib64/ld-linux-x86-64.so.2 (0x00007f4e3a08e000)
$ ldconfig -v | grep libstd
ldconfig: Can't stat /libx32: No such file or directory
ldconfig: ath `/usr/lib' given more than once
(from <builtin>:0 and <builtin>:0)
ldconfig: ath `/usr/lib64' given more than once
(from <builtin>:0 and <builtin>:0)
ldconfig: Can't stat /libx32: No such file or directory
ldconfig: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
        libstdc++.so.6 -> libstdc++.so.6.0.29

답변1

첫 번째 바이너리는 32비트 바이너리이고 두 번째 바이너리는 64비트 바이너리입니다( s 참조 ld-linux.so). 64비트 버전이 있지만 libstdc++32비트 버전이 없습니다.

설치하면 libstdc++.i686이 문제가 해결됩니다.

sudo dnf install libstdc++.i686

관련 정보