Pakao (među)zavisnosti? Kako rešavate?

Skinete izvorni kod nekog programa, i krenete da ga kompajlirate i instalirate, da li imate neke smernice, kako izaći iz Pakla (među)zavisnosti? Da li imate neki šablon ili okvir kojeg se držite?

Npr. neke programe sam lako instalirao, ali kod nekih recimo… imao sam problem da provalim uopšte šta je tu zapravo međuzavisnost (ok nekad je internet pomagao, a nekad i nije), tj. koji paket je potrebno instalirati da bi se rešila neka (među)zavisnost, a ovime nekad nastanu i čitavi lanci novih (među)zavisnosti. Kako se vi borite sa ovim?

Kakvih ili da li ima nekih boljih fora kako da se vidi, sem čitanja tekstualnih fajlova koji idu uz izvorni kod, kako da se izbori sa zavisnostima?

I kao neko dodatno pitanje, kako se kod optimizuje tačno za određenu platformu na ovaj način, npr. u gcc-u ili…?

Obično piše u dokumentaciji koja dolazi uz sors. Ako ne, onda web ili git strana programa. Ako i to ne pomogne, onda ispis pri kompajliranju. Tj. pri “./configure” :slight_smile:

@Optimizacija:

Definišeš CFLAGS za C kod ( većina GTK aplikacija ), CXXFLAGS za C++ kod ( većina QT aplikacija ), ili oba ( postoje i programi koji su pisani u oba )
Najbolje je za svaki program posebno, mada možeš i globalno da ih eksportuješ u “/etc/profile”*. Npr:

  • make CFLAGS="…" CXXFLAGS="…"

  • make CFLAGS="-mtune=core2 -O2"

Detaljnije:
https://gcc.gnu.org/onlinedocs/gcc/i386-and-x86-64-Options.html
http://wiki.gentoo.org/wiki/GCC_optimization

EDIT:

Takođe, zaboravih, @make dodaješ i “jn”, ako imaš CPU sa više jezgara ( brže se kompajlira jer koristi dati broj jezgara ), gde je “n” broj jezgara + 1. Znači, za dual-core ide "make -j3…

@/etc/profile:

Dopišeš npr:

export CFLAGS="-march=native -O2 -pipe"
export CXXFLAGS="$CFLAGS"
export MAKEOPTS="-j3"

Hvala Ćofi ovo je odlično upustvo! :slight_smile:

A da li negde postoje već gotove iskomajlirane stvari nekih paketa, npr. ok naravno ne celih programa, ali recimo nekih delova međuzavisnosti, npr. lib-ova…?

Ok kapiram da je bolji fazon da se napravi optimizacija baš za datu mašinu, otuda i čar kompajliranja iz source-a ,ali da li negde postoje i gotove neke stvari, ako se ne varam, neko mi je davno pre dosta godina nešto tako i pokazivao, neke sajtove?!

P. S. Videću da nađem nešto da kompajliram ovih dana, pa ću javiti rezultate, možda npr. Jahshaku program kojeg nisam uspeo nigde sam kompajlirati, već sam ga negde video da postoji u nekoj live distrubuciji, tamo je već bio instaliran kako treba.

Ako, ako, samo cepaj. Vidim ja da ćeš ti na Gentoo uskoro. :smiley: Nema ti života… :smiley:

Nema na čemu :slight_smile:

Zavisi o čemu je reč. Za većinu Linuks programa, veliki deo zavisnosti imaš u repou ( naravno zavisi od distribucije ). :slight_smile:

Što se optimizacije tiče:

  1. “Treba” ti za programe koji žderu CPU ( sigurno ti nije potrebna za text editor i sl. mada ne škodi ( vidi 2. ))
  2. Možeš i da preteraš sa njom, pa da dobiješ gore performanse nego bez njih. ( Takođe, veći “-O” nivo usporava kompajliranje )
  3. Ono gde zapravo ima najviše smisla, jeste mašina sa slabim procesorom, gde je svaki % performansi “osetan” ( single-core, P4, Athlon, Atom… ) :slight_smile:

Yep, slobodno probaj, i piši kako je prošlo/pitaj ako bude problema. :slight_smile:

@Jahshaka:

Ako je reč o http://sourceforge.net/projects/jahshakafx/ problem je što je ovo koliko vidim prilično star softver. Zahteva QT3 koji je odavno prevaziđen, i nema ga u većini distroa ( u Deb Džesi barem nema 100%, proverio sam ).
README:

The only dependencies you need are Qt 3.x, freetype 2.x and glut 3.7+.

glut takođe ne postoji:
https://tracker.debian.org/pkg/glut

Sve u svemu, verovatno bi mogla oba da se kompajliraju, ali je pitanje da li bi i kako sve to radilo, s’ obzirom na ogromnu vremensku razliku… :slight_smile:

P.S. Probaj da skineš (binarni) .run fajl sa SF-a, možda i prođe instalacija, ako je statički linkovan ( potrebne biblioteke “nosi” sa sobom = ne koristi sistemske )
P.S.2 Svakako probaj da kompajliraš, samo pronađi sors za QT3 i glut.
:slight_smile:

Jeste to je taj program Jahshaka, probaću pa javim. :slight_smile: Donekle znam šta su statičke, a šta dinamičke biblioteke, ali hvala što tolerišeš nas sa slabijim znanjem. :slight_smile:

Rapho, imao sam u planu da probam i Gentoo, a i linux from scratch. :slight_smile: Ok, otom-potom… :slight_smile:

Za Gentoo (GENTOOMICIN? :slight_smile: ) ste isto rekli da nije pod Dart Vejderom i Tamnom Silom Univerzuma, LFS je priča za sebe. :slight_smile:

Video sam jednu dobru foru, kada fale neke dinamičke biblioteke, baš određene verzije, npr. napraviš valjda simbolički link sa tim imenom, na novu verziju dinamičke biblioteke, tako neka fora, znam da mi je to kod jedne stvari upalilo skroz. :slight_smile: Valjda ova fora pali uvek?

P. S. Ako se ne varam Jahshaku sam video na nekoj live distrubiciji dali nekog edukativnog ili muzičkog live linux cd-a… e sad sad da se setim imena, teško… Ima jako zanimljivih live linux distribucija za određene vrste korisnika, npr. za studente, muzičare, naučnike, itd. Tako sam naleteo i na Jahshaku, već iskompajliranog samo da se startuje. :slight_smile:

Ok, nije deo teme, pošto je ovde reč o kompajliranju iz source-a, rekoh na drugoj temi da sam najviše voleo linux mint od svih distribucija.

Evo kako izgleda pokretanje ovog programa u ovoj distribuciji, gde je sve lakše. Jedina varijanta da se ovaj program najlakše natera da radi je skidanje portabilne 32-bitne verzije (za ubuntu) odavde:

http://sourceforge.net/projects/portable/

Naravno u 64-bitnom mintu, ovo podrazumeva da se aktivira multiarch podrška.

Kada se otpakuje i pokrene, izbacuje da mu fali neka neka libfuse2 biblioteka. Međutim kako je ista postojala, onda sam samo sa sudo apt-get install dodao 32-bitnu verziju i sve je proradilo: :slight_smile:

sudo apt-get install libfuse2:i386
E sad preko source-a u nekoj drugoj distribuciji doći do toga da radi ovaj program, bi bile verovatno paklene muke. Ako stignem da probam u Slacku javiću kako je išlo. :slight_smile:

Hvala još jednom na pomoći. :slight_smile:

ja pogledam blago readme ili install.txt pa odradim šta treba, pa ako i to nije dovoljno na error izlazu svake komande piše šta fali od paketa …pa ponovo.

Iskompajlirao i instalirao sam danas Evan’s debugger, uspeo sam se snaći, ali ne mogu da se setim kod čega sam imao problema… ok ako zaglavim negde, vraćam se opet na temu. Hvala svima! :slight_smile: