6

मैं कुछ स्क्रिप्ट, शायद एक डेमॉन, या यहाँ तक कि एक सहायक बाइनरी के साथ एक आवेदन पत्र के बंडल बनाने हूँ कहो ... जब इस तरह के एक द्विआधारी संकलन .. यह संभव ही रिश्तेदार साथ यह ./configure/make है पथ? उदाहरण के लिए, एक अधिक ईमानदार Makefile जैसे प्रावधानों के लिए शामिल होंगे ...सापेक्ष पथनामों के साथ क्रॉस-संकलन - बाइनरी पोर्टेबिलिटी/एम्बेड करने योग्यता के लिए? (जीसीसी)

--bindir=DIR   user executables [EPREFIX/bin] 
--sbindir=DIR   system admin executables [EPREFIX/sbin] 
--libexecdir=DIR  program executables [EPREFIX/libexec] 
--sysconfdir=DIR  read-only single-machine data [PREFIX/etc] 
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] 
--localstatedir=DIR modifiable single-machine data [PREFIX/var] 
--libdir=DIR   object code libraries [EPREFIX/lib] 
--includedir=DIR  C header files [PREFIX/include] 
--oldincludedir=DIR C header files for non-gcc [/usr/include] 
--datarootdir=DIR  read-only arch.-independent data root [PREFIX/share] 
--datadir=DIR   read-only architecture-independent data [DATAROOTDIR] 
--infodir=DIR   info documentation [DATAROOTDIR/info] 
--localedir=DIR  locale-dependent data [DATAROOTDIR/locale] 
--mandir=DIR   man documentation [DATAROOTDIR/man] 
--docdir=DIR   documentation root [DATAROOTDIR/doc/hiawatha] 
--htmldir=DIR   html documentation [DOCDIR] 
--dvidir=DIR   dvi documentation [DOCDIR] 
--pdfdir=DIR   pdf documentation [DOCDIR] 
--psdir=DIR   ps documentation [DOCDIR] 

यह महान है, तो आप /opt/local बजाय /usr/local के लिए सब कुछ स्थापित कर सकते हैं। शायद पागल हो, और sed के माध्यम से बाइनरी नाम बदलने .. मैं समझ गया ..

लेकिन क्या मेरी छोटे मस्तिष्क में अस्पष्ट बनी हुई है, है अगर क्षमता मनमाने ढंग से इस तरीके से पथ सेट करने के लिए मैप करने के लिए क्षमता के लिए प्रदान निर्देशिका निष्पादन के सापेक्ष, एक तरह से करने के लिए इसी में ...

--prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] 
--prefix=./  aka [../relative/to/binary]  

तो, उदाहरण के लिए, तुम कहाँ से bin शुरू की कोई बात नहीं है, यह हमेशा पता होगा यह .conf फ़ाइल को जा रहा था कि एक फ़ोल्डर, उस रिश्तेदार ../etc फ़ोल्डर में, या संभवतः इसके ठीक आगे भी, उसी निर्देशिका में, ./। इसी प्रकार, आप अपने लक्ष्य की अनुमति/निर्देशिका संरचना के बारे में सोचने के बिना लॉग और पिड फाइलों आदि के लिए लेखन पहुंच की गारंटी दे सकते हैं ...

यह एक पूरी तरह से पोर्टेबल /bin /etc /lib /var निर्देशिका संरचना को सक्षम करेगा, जिसमें एक पाथ के भीतर मैं कुछ गारंटी दे सकता हूं भविष्यवाणी की समानता ... लेकिन मुझे नहीं लगता कि यह सिर्फ "काम करता है" .. और मुझे यकीन है कि अगर "स्थिर रूप से लिंक करना" या अन्यथा अनिश्चित है? सचमुच उन बाइनरी बनाती है जो किसी अन्य सिस्टम () में स्थानांतरित करने में सक्षम हैं, इस परिदृश्य के लिए, उसी स्थान पर समान समर्थन libs वाले लोगों के लिए, ताकि समस्या को हल न करें) क्या यह संभवतः इस में क्रॉस-संकलन करना है तौर तरीका? और क्या आप एक ही निर्माण चक्र में कई आर्किटेक्चर के लिए निर्माण कर सकते हैं? (उदाहरण के लिए i386 और x86_64 एक ही समय में)

शायद मैं एक अच्छा जीएनयू/जीसीसी प्राइमर (सीसी, सीएफएलजीएस, एलडीएफएलजीएस, -एल,, -आई, और सीपीपी 101 इत्यादि) की सिफारिश का उपयोग कर सकता हूं। लेकिन यह 70 के दशक में गणित शिक्षकों के लिए (और द्वारा) लिखा नहीं गया था?

उत्तर

0

पूर्ण सामान्यता में, नहीं, यह काम नहीं करेगा। उदाहरण के लिए/etc में चीजें हैं जिन्हें पूरे सिस्टम द्वारा साझा किया जाने की उम्मीद है और यदि आप एक ऐप के लिए निजी प्रति रखने की कोशिश कर रहे हैं तो सही तरीके से काम नहीं करेंगे।

इसके साथ ही, आपका ऐप शायद सिस्टम पर हर साझा संसाधन का उपयोग नहीं कर रहा है। या तो स्थानीय/बिन और/sbin का उपयोग करके, या अपने ऐप की निर्देशिका में किसी रिश्तेदार पथ से वास्तविक लोगों को सिम्लिंकिंग ठीक होना चाहिए।/var कुछ ऐसा लगता है जो आपके ऐप को सीधे के बारे में जानने की ज़रूरत है - कुछ भी आपको लॉग इन करने से रोकता है, या syslogd का उपयोग कर रहा है?

संबंधित मुद्दे