6

Bazı betiklerle, belki bir daemonla veya bir yardımcı ikili ile bir uygulama paketi oluşturduğumu söyleyeyim ... Böyle bir ikili derleme yaparken ... sadece ilgili ile uyumludur. /configure/yapmak mümkün yolları? Örneğin, bir daha vicdani Makefile bu harikaGöreli yol adları ile çapraz derleme - ikili taşınabilirlik/katıştırılabilirlik için? (GCC)

--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] 

, sen /opt/local yerine /usr/local için her şeyi yükleyebilirsiniz ... gibi hükümler içerecektir. Hatta belki çıldıracağım ve sed yoluyla ikilileri adlandırmak .. Anladım ..

Ama ne yeteneği keyfi şekilde yolları atamak için ise olduğunu, benim küçük beyin belirsizliğini koruyor ilişkilendirme becerisini kadar uzanır benzer bir şekilde yürütülebilir göre dizinler, ...

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

Yani, örneğin, içinden bin başlattı olursa olsun, bunun .conf dosya yukarı olacaktı olduğunu biliyorum hep olur Bir klasör, bu göreli ../etc klasöründe veya muhtemelen hemen yanında, aynı dizinde, ./. Benzer şekilde, hedefin izinleri/dizin yapısını merak etmeden, günlük ve pid dosyalarına vb. Yazma erişimini garanti edebilirsiniz ...

Bu, bazılarını garanti edebildiğim bir PATH içinde tamamen taşınabilir /bin /etc /lib /var dizin yapısını etkinleştirir Tahmin edilebilirlik yanlısı ... ama sanırım bunun gibi "işe yaramaz" .. Ve basitçe "statik olarak bağlanıyor" ya da başka bir şeyden emin değil miyim? gerçekten başka bir sisteme (de olsa, bu senaryo için, aynı yerlerde aynı destek libs sahip olanlar için, sorunu muddle değil) taşınabilen ikili dosyaları oluşturur Bu muhtemelen çapraz derleme mi tavır? Aynı yapı döngüsünde birden fazla mimariyi inşa edebilir misiniz? (Örneğin, aynı anda i386 VE x86_64)

Belki iyi bir GNU/GCC primer (CC, CFLAGS, LDFLAGS, -l, -I ve CPP 101 vb.) Önerilerini kullanabilirim. ama bu 70'lerde (ve) Matematik öğretmenleri için yazılmadı mı?

cevap

0

Tam olarak, hayır, bu işe yaramaz. Örneğin, tüm sistem tarafından paylaşılması beklenen ve tek bir uygulama için özel bir kopyasını tutmaya çalışıyorsanız,/etc içindeki/etc içindeki şeyler vardır.

Bununla birlikte, uygulamanız muhtemelen her bir paylaşılan kaynağı sistemde kullanmıyor. Bir yerel/bin ve/sbin kullanarak ya da uygulamanızın dizinindeki göreli bir yoldan gerçek olanlara simetrik bağlantı kurmalısınız./var uygulamanızın doğrudan hakkında bilmesi gereken bir şey daha az olası görünüyor - günlükleri kendi yolunuzdan kaydetmekten vazgeçen bir şey mi yoksa syslogd'u mu kullanıyorsunuz?