17.02.2019 12:56, Steve Kargl wrote: > On Sun, Feb 17, 2019 at 12:37:36PM +0700, Eugene Grosbein 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. When someone builds a binary having same requirements but without writing port/using bsd.gcc.mk, same needs to be done and everything should just work. Or better create a port. _______________________________________________ freebsd-ports@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-ports To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"