0

The scenario is this: My compilation environment is unified, using the lower-level glibc_2.18. I want to depend on a CUDA .so file compiled using the higher-level glibc_2.27.

My runtime environment uses the higher-level glibc version, and I want to compile the binary using the lower-level glibc version and then run it in the glibc 2.27 environment.

The reason for this is that the compilation environment is unified. Upgrading the glibc in the compilation environment would mean that all runtime environments would need to upgrade glibc, which would be costly.

3
  • So you want some of your binaries to use glibc_2.18 and others to use glibc_2.27. It looks like you need two compilation environments for that. There seems to be no way around it. A compilation environment need not be anything overly complicated. You can have glibc 2.27 living in a directory, without installing it as your system glibc. Then point to that directory as your includes/libraries root only when needed. Commented Sep 9 at 14:53
  • I tried this approach before, but then system libraries like librt.so and libpthread.so started failing to find symbols with the GLIBC_PRIVATE suffix. I'm not sure how many libraries there are like this, so I didn't do a full upgrade. Commented Sep 10 at 12:06
  • librt.so and libpthread.so (and many other libraries) are part of glibc. You cannot link to a new version of libc.so and an old version of libpthread.so (or any other library that comes with glibc). Commented Sep 10 at 12:32

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.