FreeCAD 0.17 && /lib//libgcc_s.so.1
Steve Kargl
sgk at troutmask.apl.washington.edu
Sun Feb 17 06:19:22 UTC 2019
On Sun, Feb 17, 2019 at 01:13:15PM +0700, Eugene Grosbein wrote:
> 17.02.2019 12:56, Steve Kargl wrote:
>
> >> 17.02.2019 12:11, Steve Kargl wrot:
> >>>
> >>> There is a problem with the order of libgcc_s.so.1
> >>> in the cache created by ldconfig. rtld will use
> >>> the first one it finds. If it fails, it fails. It
> >>> does not look to see if there is a second entry.
> >>
> >> If binary needs specific version of libgcc_s.so.1 installed
> >> with gcc8 port/package, then building system must use specific
> >> rpath, so rtld would not use "the first one it finds".
> >
> > This is a well-known problem with libgcc_s.so.1 and gfortran.
> > You can state whatever you believe should happen, but it does
> > not seem to work that. You have a few options:
> > 1) Add -static to your options;
> > 2) Use LD_LIBRARY_PATH, LD_RUN_PATH to point to
> > /usr/local/lib/gcc8;
> > 3) Add -Wl,-rpath=/usr/local/lib/gcc8 to FFLAGS in /etc/make.conf
> > (check syntax for this one);
> > 4) bump the major library version number for /lib/libgcc.so.1
> > to 2;
> > 5) fix rtld to not fail on the first found library in the cache.
> > Iterated over all entries and only fail if the library isn't found;
> > 6) rename /lib/libgcc_s.so.1 to /lib/libllvm_s.so.1 and teach
> > llvm/clang/rtld to not misappropriate a well-known GCC library
> > name.
> >
>
> When a port from our Ports Collection needs specific version of GCC and its runtime libraries,
> it utilizes "USE_GCC=8" and bsd.gcc.mk adds this to make everybody happy:
>
> CFLAGS+= -Wl,-rpath=${_GCC_RUNTIME}
> CXXFLAGS+= -Wl,-rpath=${_GCC_RUNTIME}
> LDFLAGS+= -Wl,-rpath=${_GCC_RUNTIME} -L${_GCC_RUNTIME}
>
> This is your 3) case and this is what I have meant.
FFLAGS+= ????
For whatever reason, there are situations where the rpath
isn't set in the library. Read the rtld manpage. You're
hitting #5 in the list.
--
Steve
More information about the freebsd-ports
mailing list