আপনার গড় ডেস্কটপ লিনাক্সের ওএস এক্স-এর চেয়ে বেশি সমৃদ্ধ ইউজারল্যান্ড রয়েছে
আমার চেয়ে আপনি সম্ভবত বিভিন্ন সরঞ্জাম মিস করবেন, সুতরাং প্রতিস্থাপনের জন্য সুপারিশগুলি সম্পর্কে সুনির্দিষ্ট হওয়ার কোনও ধারণা নেই।
পরিবর্তে, কেবল ফিঙ্ক , ম্যাকপোর্টস বা হোমব্রিউ প্রথম জিনিস ইনস্টল করুন । এই সিস্টেমগুলি লিনাক্স বা বিএসডিগুলির মতো একটি প্যাকেজ পরিচালনা সিস্টেম সরবরাহ করে। প্রত্যেকের নিজস্ব স্বাদ এবং প্যাকেজ সেট রয়েছে, তাই সঠিক পছন্দটি আপনার স্বাদ এবং প্রয়োজনের ভিত্তিতে হবে।
আপনি দেখতে পাবেন যে আপনার প্রয়োজন প্রতিটি প্রোগ্রাম কোনও প্যাকেজ সিস্টেমে থাকবে না। কিছু প্রোগ্রাম এখনও ওএস এক্সে পোর্ট করা যায়নি, সুতরাং সেগুলি কোনও প্যাকেজ সিস্টেমে উপস্থিত হবে না । তবুও, এই সিস্টেমগুলি ওএস এক্সের সাথে কী জাহাজগুলি বহুলাংশে প্রসারিত করে এবং লিনাক্স থেকে আপনার স্থানান্তরকে সহজ করবে।
ওএস এক্স কমান্ড লাইন সংকলকরা এখন ডিফল্টরূপে 64-বিট এক্সিকিউটেবল তৈরি করে।
চিতাবাঘ এবং এর আগে, সংকলকগুলি তার পরিবর্তে ডিফল্ট হিসাবে 32-বিট এক্সিকিউটেবল তৈরি করে। এটি বিভিন্ন উপায়ে সমস্যার সৃষ্টি করতে পারে: সম্ভবত আপনার কাছে পুরাতন 32-বিট লাইব্রেরি রয়েছে যা আপনি পুনর্নির্মাণ করতে পারবেন না তবে এর সাথে লিঙ্ক করতে হবে, সম্ভবত আপনি এখনও 32-বিট মোডে আপনার সিস্টেম চালাচ্ছেন, ইত্যাদি etc.
32-বিট বিল্ডকে জোর করার একটি উপায় হ'ল gcc
বিল্ড সিস্টেমে ডিফল্টগুলি ওভাররাইড করা gcc-4.0
, এটি হ'ল পুরাতন 32-বিট-বাই-ডিফল্ট চিতাবাঘ সংকলক। ( স্নো চিতাবাঘের gcc
the৪-বিট-বি-ডিফল্টের একটি সিমিলিংক gcc-4.2
)) অটোকনফ ভিত্তিক বিল্ড সিস্টেমের সাথে এটি কাজ করে:
$ ./configure CC=gcc-4.0 CXX=g++-4.0
( CXX
যদি প্রোগ্রামটিতে সি ++ উপাদান থাকে তবে আপনার কেবল কিছুটা প্রয়োজন need )
আর একটি উপায় হ'ল -m32
সংকলক এবং লিঙ্কারে পাস করা:
$ ./configure CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
এটি আরও টাইপিং, তবে এটি আপনাকে আরও নতুন জিসিসি থেকে 32-বিট বিল্ডগুলি পেতে দেয়।
গতিশীল সংযোগটি সম্পূর্ণ আলাদা।
আপনি যদি নিজের ld
কমান্ডগুলি হাতে লিখে লেখার জন্য বাছাই করেন তবে এই অভ্যাসটি ভেঙে দেওয়ার সময় এসেছে। পরিবর্তে আপনাকে সংকলকটির মাধ্যমে প্রোগ্রামগুলি এবং লাইব্রেরিগুলির লিঙ্ক করা উচিত, বা কোনও মধ্যস্থতাকারী ব্যবহার করা উচিত libtool
। এগুলি নিগলি প্ল্যাটফর্ম-নির্দিষ্ট লিঙ্ক স্কিমের পার্থক্যগুলির যত্ন নেয়, যাতে আপনি পোর্টেবল পদ্ধতিতে বিমূর্ত করতে পারবেন না এমন প্রোগ্রামগুলি শেখার জন্য মস্তিষ্কের শক্তি সঞ্চয় করতে পারেন।
উদাহরণস্বরূপ, আপনাকে নিজের পেশী মেমরি আপডেট করতে হবে যাতে লাইব্রেরিগুলির সাথে কী যুক্ত হয় তা নির্ধারণের otool -L someprogram
পরিবর্তে আপনি টাইপ করুন ।ldd someprogram
someprogram
গতিশীল সংযোগের আরেকটি পার্থক্য যা প্রথমে আপনার মস্তিষ্ককে মোচড় দেবে তা হ'ল ওএস এক্স-এ, একটি লাইব্রেরির জন্য ইনস্টল করার অবস্থানটি লাইব্রেরিতেই রেকর্ড করা হয় এবং লিঙ্কারের সাথে লিংক অনুলিপি কার্যকর করে able এর অর্থ হ'ল আপনি যদি এমন কোনও লাইব্রেরির সাথে লিঙ্ক করেন যা ইনস্টল হয়ে গেছে /usr/local/lib
তবে আপনি নির্বাহের মতো একই ডিরেক্টরিতে এটি আপনার ব্যবহারকারীদের কাছে প্রেরণ করতে চান তবে আপনার ইনস্টল প্রক্রিয়াটির অংশ হিসাবে আপনাকে এ জাতীয় কিছু বলতে হবে:
$ cp /usr/local/lib/libfoo.dylib .
$ install_name_tool -id @loader_path/libfoo.dylib libfoo.dylib
$ make LDFLAGS=-L. relink
এখন, উপরে তৈরির বেশিরভাগটি আপনার বিল্ড সিস্টেমের জন্য পরিবর্তিত হতে পারে, তাই কেবল একটি রেসিপি না দিয়ে উদাহরণ হিসাবে গ্রহণ করুন। এটি যা করে তা হ'ল যে লাইব্রেরির সাথে আমরা লিঙ্ক করব তার একটি ব্যক্তিগত অনুলিপি তৈরি করে, তার ভাগ করা লাইব্রেরি শনাক্তকারীকে একটি নির্ধারিত পাথ থেকে "এক্সিকিউটেবলের মতো একই ডিরেক্টরিতে" অর্থ সম্পর্কিত করে পরিবর্তিত করে, তারপরে এই পরিবর্তিত অনুলিপিটির বিরুদ্ধে এক্সিকিউটেবলের পুনর্নির্মাণকে বাধ্য করে গ্রন্থাগারের
install_name_tool
এখানে কোর কমান্ড। পরিবর্তে আপনি যদি ../lib
এক্সিকিউটেবলের সাথে সম্পর্কিত কোনও ডিরেক্টরিতে লাইব্রেরিটি ইনস্টল করতে চান তবে তার পরিবর্তে -id
যুক্তিটি থাকা দরকার @loader_path/../lib/libfoo.dylib
।
জো ডি পোল এ সম্পর্কে একটি আরও নিবন্ধ লিখেছিলেন , আরও অনেকগুলি বিশদ সহ।
গতিশীল লিঙ্কেজ + তৃতীয় পক্ষের প্যাকেজগুলি শুরুর দিকে মাথা ব্যথার কারণ হতে পারে।
আপনি তৃতীয় পক্ষের প্যাকেজগুলি থেকে লাইব্রেরিগুলি ব্যবহার করার চেষ্টা শুরু করার সাথে সাথে গতিশীল লিংকেজ সংক্রান্ত সমস্যার মধ্যে তাড়াতাড়ি শুরু হতে পারে যা স্ট্যান্ডার্ড লোকেশনগুলিতে লাইব্রেরি ইনস্টল করে না। ম্যাকপোর্টস এটি করে, উদাহরণস্বরূপ /opt/local/lib
, এর পরিবর্তে /usr/lib
বা এর চেয়ে লাইব্রেরি ইনস্টল করে /usr/local/lib
। আপনি যখন এটি চালনা করেন, সমস্যার জন্য একটি ভাল সমাধান হ'ল নিম্নলিখিতটিতে লাইন যুক্ত করা আপনার .bash_profile
:
# Tell the dynamic linker (dyld) where to find MacPorts package libs
export DYLD_LIBRARY_PATH=/opt/local/lib:$DYLD_LIBRARY_PATH
# Add MacPorts header file install dirs to your gcc and g++ include paths
export C_INCLUDE_PATH=/opt/local/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/opt/local/include:$CPLUS_INCLUDE_PATH
ওএস এক্স সিপিইউ সামঞ্জস্যতার বিষয়টি লিনাক্সের চেয়ে আলাদাভাবে পরিচালনা করে।
একটি 64৪-বিট লিনাক্সে যেখানে আপনাকে যে কোনও কারণেই 32-বিট সমর্থন করতে হবে, আপনি দুটি কপি লাইব্রেরির মতো সমাপ্ত lib64
ডিরেক্টরিতে -৪ -বিট সংস্করণ বন্ধ করে উভয় ফর্ম্যাটে থাকা দরকার with traditionalতিহ্যবাহী lib
ডিরেক্টরি।
ওএস এক্স ইউনিভার্সাল বাইনারি ধারণার সাহায্যে এই সমস্যাটিকে অন্যভাবে সমাধান করে, যা আপনাকে একক ফাইলে একাধিক বাইনারি রাখতে দেয়। আপনার কাছে বর্তমানে এক্সিকিউটেবল থাকতে পারে যা 4 টি সিপিইউ টাইপ পর্যন্ত সমর্থন করে: 32- এবং 64-বিট পাওয়ারপিসি, প্লাস 32- এবং 64-বিট ইন্টেল।
এক্সকোড দিয়ে ইউনিভার্সাল বাইনারিগুলি তৈরি করা সহজ তবে কমান্ড লাইন সরঞ্জামগুলির সাহায্যে কিছুটা ব্যথা। এটি আপনাকে অটোকনফ-ভিত্তিক বিল্ড সিস্টেমগুলির সাথে একটি ইউনিভার্সাল ইন্টেল-কেবল বিল্ড দেয়:
$ ./configure --disable-dependency-tracking CFLAGS='-arch i386 -arch x86_64' \
LDFLAGS='-arch i386 -arch x86_64'
যোগ -arch ppc -arch ppc64
করুন CFLAGS
এবং LDFLAGS
আপনার পাওয়ারপিসি সমর্থন প্রয়োজন হলে।
যদি আপনি নির্ভরতা ট্র্যাকিং অক্ষম না করেন তবে আপনি কেবলমাত্র একটি প্ল্যাটফর্মের জন্য বিল্ডিং শেষ করবেন, যেহেতু .o
প্রথম প্ল্যাটফর্মের জন্য সদ্য নির্মিত ফাইলগুলির উপস্থিতি make(1)
এটি নিশ্চিত করে যে এটি দ্বিতীয় প্ল্যাটফর্মের জন্যও তৈরি করার দরকার নেই। উপরের উদাহরণে সবকিছুই দু'বার তৈরি করতে হবে; পুরোপুরি-ইউনিভার্সাল বাইনারিগুলির জন্য চারবার, যদি আপনার এখনও পাওয়ারপিসি সমর্থন প্রয়োজন।
( অ্যাপল টেকনিক্যাল নোট টিএন 2137 এ আরও তথ্য ।)
বিকাশকারী সরঞ্জামগুলি ডিফল্টরূপে ওএস এক্সে ইনস্টল করা হয় না।
সিংহের আগে, আপনার সিস্টেমের জন্য সঠিক দেব সরঞ্জাম পাওয়ার সবচেয়ে নির্ভরযোগ্য জায়গাটি ওএস ডিস্কে ছিল। এগুলি একটি alচ্ছিক ইনস্টল।
ওএস ডিস্ক থেকে ডেভ সরঞ্জামগুলি ইনস্টল করার সুন্দর জিনিসটি আপনি জানেন যে সরঞ্জামগুলি ওএসের সাথে কাজ করবে। অ্যাপল অ্যাপল হওয়ায় আপনার কাছে সর্বশেষতম সংকলকগুলি চালনার জন্য ওএসের একটি সাম্প্রতিক সংস্করণ থাকতে হবে এবং তারা সর্বদা পুরানো সরঞ্জামগুলির ডাউনলোডগুলি সহজলভ্য করেনি, তাই কোনও ওএস ডিস্ক প্রদত্তের জন্য সঠিক সরঞ্জামগুলি সন্ধান করার প্রায়শই সহজ উপায় are দেব বা পরীক্ষার বাক্স।
সিংহের সাথে, তারা ইনস্টল মিডিয়াটি বন্ধ করার চেষ্টা করছে, সুতরাং আপনি ব্যয়বহুল ইউএসবি কী সংস্করণটি না কিনে আপনাকে অ্যাপ স্টোর থেকে এক্সকোড ডাউনলোড করতে হবে ।
আমি আপনাকে ডাউনলোড করা কোনও এক্সকোড ডিএমজির কমপক্ষে কয়েকটি সংস্করণ রাখার পরামর্শ দিচ্ছি। সিংহের উত্তরসূরি যখন এক বা তিন বছর পরে আসে, আপনি সিংহ পরীক্ষার ভিএম-তে Xcode এর সমসাময়িক সংস্করণ ইনস্টল করার উপায় ছাড়া নিজেকে খুঁজে পেতে পারেন। প্রাপ্যতা সমস্যা এবং ওএস মিডিয়ার অভাব যদি এক্সকোডের পুরানো সংস্করণ অন্যথায় অপ্রয়োজনীয় করে তোলে তবে সামনে পরিকল্পনা করুন।