Re: git: 5e6a2d6eb220 - main - Reapply: move libc++ from /usr/lib to /lib [add /usr/lib/libc++.so.1 -> ../../lib/libc++.so.1 ?]
- Reply: Mark Millard via freebsd-current : "Re: git: 5e6a2d6eb220 - main - Reapply: move libc++ from /usr/lib to /lib [add /usr/lib/libc++.so.1 -> ../../lib/libc++.so.1 ?]"
- Reply: Ed Maste : "Re: git: 5e6a2d6eb220 - main - Reapply: move libc++ from /usr/lib to /lib [add /usr/lib/libc++.so.1 -> ../../lib/libc++.so.1 ?]"
- In reply to: Mark Millard via freebsd-current : "Re: git: 5e6a2d6eb220 - main - Reapply: move libc++ from /usr/lib to /lib [add /usr/lib/libc++.so.1 -> ../../lib/libc++.so.1 ?]"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 31 Dec 2021 23:04:00 UTC
On 12/31/21 2:59 PM, Mark Millard wrote: > On 2021-Dec-31, at 14:28, Mark Millard <marklmi@yahoo.com> wrote: > >> On 2021-Dec-30, at 14:04, John Baldwin <jhb@freebsd.org> wrote: >> >>> On 12/30/21 1:09 PM, Mark Millard wrote: >>>> On 2021-Dec-30, at 13:05, Mark Millard <marklmi@yahoo.com> wrote: >>>>> This asks a question in a different direction that my prior >>>>> reports about my builds vs. Cy's reported build. >>>>> >>>>> Background: >>>>> >>>>> /usr/obj/BUILDs/main-amd64-nodbg-clang/usr/main-src/amd64.amd64/tmp/usr/lib/libc++.so:GROUP ( /lib/libc++.so.1 /usr/lib/libcxxrt.so >>>>> and: >>>>> lrwxr-xr-x 1 root wheel 23 Dec 29 13:17:01 2021 /usr/lib/libcxxrt.so -> ../../lib/libcxxrt.so.1 >>>>> >>>>> Why did libc++.so.1 not get a: >>>>> >>>>> /usr/lib/libc++.so.1 -> ../../lib/libc++.so.1 >>>> I forgot to remove the .1 on the left hand side: >>>> /usr/lib/libc++.so -> ../../lib/libc++.so.1 >>> >>> Because for libc++.so we don't just symlink to the current version of the library >>> (as we do for most other shared libraries) to tell the compiler what to link against >>> for -lc++, instead we use a linker script that tells the compiler to link against >>> both of those libraries when -lc++ is encountered. >> >> A better identification of what looks odd to me is the >> path variations in: >> >> # more /usr/lib/libc++.so > > Another not great day on my part: That path alone makes > the mix of /lib/ and /usr/lib/ use involved, given the > reference to /lib/libc++.so.1 . That would still be true > if the other path had been /lib/libcxxrt.so . /usr/lib/libc++.so is only used by the compiler/linker when linking a binary. The resulting binary has the associated paths (/lib/libc++.so.1 and /usr/lib/libcxxrt.so.1) in its DT_NEEDED. So it is fine for the .so to be in /usr/lib. This is the same with /usr/lib/libc.so vs /lib/libc.so.7. However, your point about libcxxrt.so.1 is valid. It needs to also be moved to /lib if libc++.so.1 is moved to /lib. Doing so will also require yet another depend-clean.sh fixup (well, probably just adjusting the one I added to check the libcxxrt path instead of libc++ path). -- John Baldwin