configure script issue with -flto with recent gcc and system ar/ranlib
On 4/25/19 6:11 PM, Thomas K?nig wrote:
Hi Tomas,
On 4/23/19 2:59 PM, Thomas K?nig wrote:
Hi, there can be an issue with recent gcc where the system-installed "ar" and "ranlib" commands cannot handle LTO binaries.? On compilation, this manifests itself with error messages claiming that they need extra plugins.
Thanks for the report. What was the version of binutils on the system with this problem? On my Ubuntu 18.04 I can use the binutils version of "ar" and "ranlib" with --enable-lto without problems.? I read that with recent binutils (2.25?), the LTO plugin should be loaded automatically, so one does not have to use the wrappers anymore.
This was with, on x86_64-pc-linux-gnu, GNU ar (GNU Binutils; openSUSE Leap 42.3) 2.31.1.20180828-19 and, on powerpc64le-unknown-linux-gnu, GNU ar version 2.27-34.base.el7 both with a recent gcc 9.0.1 snapshot.
Thanks. I can reproduce with Leap 42.3 and gcc-8, the binutils ar fails with errors "plugin needed to handle lto object". This is because "ar" cannot find the LTO plugin liblto_plugin.so. The plugin needs to be in directory /usr/lib/bfd-plugins for ar/nm/ranlib to find it. On 42.3, gcc installation fails to create that directory and link its plugin there. I read that the problem is fixed in Leap 45. To work this around in Leap 42.3, one may build R using the wrappers (AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm) or create the link. mkdir /usr/lib/bfd-plugins ln -s /usr/lib64/gcc/x86_64-suse-linux/8/liblto_plugin.so /usr/lib/bfd-plugins Similar wrappers exist also for LLVM, but I read that LLVM installation on Leap 42.3 links its plugin properly from /usr/lib/bfd-plugins. Best Tomas
Regards ????Thomas