2009-02-21 23 views
6

Bir yazılım paketini nasıl oluşturabiliriz? bizim yazılım katran top kullanıcıyı ayıklanması sonra tipik adımları yapabilirsiniz Yani: (son iki adımlar için gerekli Makefile üretecektir) yapılandırmak komut dosyası oluşturmak içinUnix/Linux'taki yazılım paketi nasıl oluşturulur

$ gunzip < mycode.tar.gz | tar xvf - 
$ ./configure 
$ make 
$ make install 

cevap

1

Kullanım Autotools, daha sonra bir tarball yapmak içindeki tüm kod ve şeyler.

1

rpmbuild rpm paketlerini Eskiden

tutorial

+0

Bağlantılı manpage'i okurken, sorduğum soruyu yanıtlamıyor gibi görünüyor: ilk etapta nasıl bir platform esnek yapı sağlarsınız (örneğin, configure ve makefile yazarken yardım) ... rpmbuild yerinde böyle bir şey olduğunu varsayar gibi görünüyor. – dmckee

+0

Belki de yanlış anlaşılır soru. http://www.lrde.epita.fr/~adl/autotools.html – Sharique

3

man page

inşa etmek için bir komut, bu işlem elle yapıldı. Her bir Makefile, elle yazılmıştır ( make dosyası bir komut dizisi olarak kullanılır). Bu, taşınabilirliğe geldiğinde sorunlu hale geldi ve böylece configure betiği yapıldı. Her proje için ./configure komut dosyası elle yazılmıştır. Sonunda bu, GNU tarafından autotools paketleriyle otomatikleştirildi. Bu, autoconf, automake ve diğer birkaç taneden oluşur. Alternatifler mevcut olsa da, özellikle make için, autotools en yaygın olarak kullanılmaktadır. ... En azından GNU/Linux sistemlerinde. Alternatifler daha önce belirtilen CMake, Boost.Build, Boost.Jam, SCons ve daha fazlasını içerir.

1

Otomatik Araçlar.

Bir configure.ac ve bir Makefile.am komut dosyası yazmanız gerekir.

Configure.ac oldukça kolaydır ve çoğunlukla kaynak kodunuzda 'autoscan' komutunu çalıştırmadan otomatik olarak oluşturulabilir. Bu, final configure.ac dosyasını oluşturmak için ince ayar yapmanız gereken bir 'configure.scan' dosyası oluşturur.

Automake.am dosyasının tamamı kurallara dayanmaz. o yüklü olmalıdır = nodist vs

  • dist = o noinst vs
  • inst inşa edilmelidir: Her şey bir adlandırma şeması dayanmaktadır

    AUTOMAKE_OPTIONS = foreign subdir-objects 
    AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \ 
        -Wfatal-errors -I blah 
    AM_LDFLAGS = blah 
    
    bin_PROGRAMS = mybinary 
    mybinary_SOURCES = \ 
        blah.h blah.cc 
    

    : gibi Muhtemelen bir şey gerekir

  • dATA = veri dosyaları
  • MANS = man sayfaları
  • KAYNAKLARI = kaynak kodu

dist_noinst_DATA, bina için gerekli olan ancak yüklenmeyen veri dosyaları içindir.

Eğer genellikle böyle bir şey çalıştırmak için gereken bu dosyaların ikisi de olduğunda: automake kurulum için

bina için gerekli dosyaları Autotools & & autoconf'u-eksik --add

& autoheader & & & aclocal. Bu bir kabuk betiğine yerleştirilebilir ve ./configure çalıştırılmadan önce çalıştırılabilir.