আমাদের গণনা ক্লাস্টারটি পুরানো কার্নেল (2.6.18) এবং অবশ্যই পুরাতন লিবস এবং বাইনারি সহ সেন্টোসের একটি খুব পুরানো সংস্করণ চালায়। কারণ পুরো জিনিসটি আপডেট করার জন্য সমস্ত নোডে প্রচুর কাজ করা দরকার, এটি কোনও বিকল্প নয়।
আমি এমন একটি প্রোগ্রাম সংকলন এবং ব্যবহার করার চেষ্টা করছি যা এর জন্য (এবং / অথবা ) C++11
এর আরও নতুন সংস্করণ প্রয়োজন । যেহেতু আমি সিস্টেমটির সাথে মোটেও গোলযোগ করতে চাই না, তাই কিছু স্থানীয় ডিরেক্টরি ট্রিতে একটি নন-রুট ব্যবহারকারী হিসাবে এটি করতে চাই।gcc
clang
সমস্যাটি হচ্ছে, এর gcc
জন্য glibc
মেশিনে উপস্থিত থাকাগুলির চেয়ে একটি নতুন প্রয়োজন । সুতরাং, glibc
আমার স্থানীয় lib/
গাছে একটি পৃথক, নতুন সংস্করণ বজায় রাখা দরকার , সম্ভবত এখানে বর্ণিত হিসাবে ।
যেখানে আমি হারিয়ে গেছি তা হল, আমি কীভাবে আমার প্রয়োজনীয় স্থানীয় বাইনারিগুলি, অর্থাৎ gcc
, g++
ইত্যাদিতে আমার স্থানীয় লাইবসের পাথগুলিকে "হার্ডকোড" করব ? আমার স্থানীয় lib/
গাছে এলডি_লিবিআরএআইএপিএটিএইচ সেট করার ফলে সমস্ত সিস্টেম বাইনারিগুলি আর কাজ করবে না ( ELF file OS ABI invalid
) কারণ তারা আমার নতুন libm.so
/ libc.so
যার বিরুদ্ধে তারা সংকলন করা হয়নি তা ব্যবহার করতে চায় ।
সুতরাং, এটি মোড়ানো পর্যন্ত: একটি নতুন, স্থানীয় উন্নয়ন স্ট্যাক (ধারণকারী বজায় রাখার জন্য সঠিক উপায় কী glibc
, gcc
প্রায় রুট হিসাবে তালগোল পাকানো ছাড়া সমান্তরাল একটি পুরানো সিস্টেমে ইত্যাদি)?
পার্শ্ববর্তী প্রশ্ন হিসাবে: এলডি_লিবিআরএইপিএটিএল সেট করা সমস্ত এসই জুড়ে সমাধান হিসাবে পোস্ট করা হয় যখন এটি আলাদা হয় glibc
। আমার জন্য, যখন আমি কোনও সিস্টেম বাইনারি (যেমন ls
) চালানোর চেষ্টা করি তখন এটি উপরের ত্রুটিগুলির কারণ ঘটায় । কিভাবে? আমি কি কিছু ভুল করেছি বা এটিই উদ্দেশ্যমূলক আচরণ?