[CMake] Forcing linking compatability to old libc / libstdc++ (Linux)

Michael Ellery mellery451 at gmail.com
Thu Jan 26 17:34:54 EST 2017


> On Jan 26, 2017, at 1:45 PM, Gonzalo Garramuño <ggarra13 at gmail.com> wrote:
> 
> 
> 
> El 26/01/2017 a las 18:35, Michael Ellery escribió:
>> In what way is the stdlib incompatible? Does it have bugs, or is this more a matter of cpp standard support?
> I should have been more clear.  Sorry.   The incompatabilities happen at linker time, with complaints such as:
> 
> exrstdattr: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by exrstdattr )
> exrstdattr: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/local/mrViewer/lib/libIlmImf-2_2.so.22 )
> 
> If I copy the latest libstdc++.so.6 I have on Ubuntu, I get:
> 
> exrstdattr: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /usr/local/mrViewer/lib/libstdc++.so.6 )
> 
> -- 
> Gonzalo Garramuño
> 

oh, yeah - I wasn’t paying close attention to the fact that you are distributing *binaries* — to a different distro no less. This is why projects often either tell users to build from source or they create packages (rpms, dpkgs, etc.) on the specific distros and versions. 

That said, if you want to distribute binaries to a different distro, I guess you can try static linking OR what you suggested, shipping the stdlib — see:

http://stackoverflow.com/questions/13636513/linking-libstdc-statically-any-gotchas#14082540

I personally would not want to ship a stdlib myself, but using CMake’s RPATH support, you can probably make it work.

-Mike



More information about the CMake mailing list