frunze galben - articole - soluție la problemele întâlnite în echipele de implementare

Uneori, secvența standard nu funcționează pentru elaborarea programului. Ea începe să afișeze o varietate de erori și compilează programul. Ce este de făcut? Acest articol descrie modul de a scăpa de multe erori comune.

Notă: Acest articol presupune că aveți deja o anumită cantitate de cunoștințe în domeniul lucrului cu linia de comandă, și știi cum să lucreze cu managerul de pachete distro dumneavoastră.

Erori în timp ce rulează comanda ./configure

Erori în timpul comenzii make

Erori în timpul make install

Erori în timp ce rulează comanda ./configure

Următoarea listă conține unele dintre cele mai comune greșeli care pot da Kamanda ./configure. Erorile sunt ordonate după frecvența de apariție. În primul rând, cele mai frecvente. Lucrurile între (și) sunt opționale, ele pot să nu apară observații. SAU, cu caractere cursive aldine înseamnă că unele greșeli au o soluție. Textul între <и> Acesta arată tipul de linie, care ar trebui să apară în acest loc.

(Configurare :) (eroare :) (Ltsomeversiongt (sau mai mare)) nu a fost găsit. (Vă rugăm să verificați instalarea!) Sau nu verificați . (Configurare :) (eroare nu :) găsit. SAU (configura :) (eroare :) ( (Sau mai nou)) este necesar pentru a construi

Acest lucru înseamnă, de obicei, că versiunea -dev sau -devel a pachetului, care se numește nu este instalat pe computer. Utilizați managerul de pachete de distribuție (sau orice alt mod de a găsi și instala pachetul), pentru a găsi pachetul și-l instalați, dacă este posibil, sau -dev versiunea -devel. În cazul în care -dev sau versiunea -devel este deja instalat, sau nu este suschechtvuet, uita-te la versiunea deja instalată. Este destul de nou? În cazul în care este mai mic decât , încercați să faceți upgrade pachetul. În cazul în care pachetul de actualizare nu este posibil, puteți încerca să compilați o versiune a programului MTAP. Versiunile mai vechi de obicei folosesc versiuni mai vechi ale bibliotecilor și a programelor necesare pentru a compila.

(Configurare :) (eroare :) nu poate găsi antetul (fișier) .h sau (Configure :) (eroare :) (antet) (fișier) .h lipsă! SAU

Scriptul de configurare nu poate găsi fișierul .h necesar pentru compilare. Această eroare este similară cu cea precedentă, în care trebuie să instalați sau versiunea -dev -devel a pachetului. De obicei, cu toate acestea, nu este clar ce fel de pachet pe care doriți să instalați pentru a rezolva această problemă, după cum Acesta poate fi numele foarte frecvente. Încercați să căutați în internetet .h, pentru a găsi pachetul pe care se află acest fișier, și apoi instalați acest pachet (și -dev acestuia sau versiune -devel dacă este posibil), folosind managerul de pachete al distribuției.

(Configurare :) (eroare :) nu cc acceptabil găsit în

Utilizați pentru a instala gcc compilator, ca variabila de mediu CC lipsește sau nu este instalat. Asigurați-vă că pachetul GCC este instalat folosind managerul de pachete al distribuției. În cazul în care acest pachet nu este instalat, instalați-l. În cazul în care este instalat, încercați următoarea comandă:

Dacă funcționează, puteți adăuga această comandă în / etc / profile (un fișier care conține comenzi care sunt executate atunci când utilizatorul se conectează) și atunci nu trebuie să-l introduceți din nou.

(Configurare :) (eroare :) C ++ Preprocessor "/ lib / cpp" nu reușește control de marjă

Pachetul g ++ lipsește sau este deteriorat. Utilizați Utilizați managerul de pachete distribuție (sau orice alt mod de a găsi și instala pachetul), pentru a găsi pachetul g ++ și instalați-l. Nu uitați că, în unele distribuții, acest pachet nu este numit g ++. Fedora, de exemplu, utilizează numele gcc-c ++ în depozit yum La unele. Dacă nu puteți găsi g ++, încercați să căutați C ++, sau cpp GCC.

(Configurare :) (eroare :) C ++ Preprocessor "CC (-e)," nu reușește control de marjă

Această eroare este cauzată de un „bug“ ciudat în unele versiuni ale bibliotecii libtool care face script-ul de configurare pentru a verifica toate libtool suport compilatoare. Cea mai simplă soluție - pentru a instala g ++.

Erori în timpul comenzii make

Deoarece erorile în performanța echipei, de obicei, face foarte specifice, voi da o listă cu lucrurile de bază care pot ajuta:

Dacă compilați un program folosind GCC 4 (utilizare gcc -dumpversion pentru a afla acest lucru), încercați să utilizați versiunea mai veche a compilatorului. Mai întâi, asigurați-vă că aveți o versiune mai veche. Acest lucru poate fi de obicei găsite folosind următoarea comandă:

Dacă se returnează ceva de genul:

Puteți utiliza comanda gcc32 pentru a compila programul în versiunile anterioare ale GCC. În cazul în care comanda nu returnează un astfel de șir de caractere, folosind managerul de pachete de distribuție dvs. pentru a găsi și instala versiunile anterioare ale GCC (de obicei numit compat-gcc sau GCC). După instalare, trebuie să fie disponibile pentru o versiune alternativă a gcc. Acesta poate fi găsit folosind comanda ls. ./configure face echipa, face și make install pentru a utiliza versiunea mai veche a GCC poți:

] $ CC = "/ usr / bin / gcc32" ./configure
[Rechosen @ localhost

] $ CC = "/ usr / bin / gcc32" face
[Rechosen @ localhost

] $ CC = "/ usr / bin / gcc32" make install

Desigur, calea / usr / bin / gcc32 trebuie să fie înlocuit cu unul în care sunteți o versiune alternativă a gcc.

Uneori, greșelile sunt cauzate de simplu program de „bug“. Încercați să descărcați cea mai recentă versiune (l folosind CVS, SVN, sau alt depozit sau descărcați ultima instantaneu) și compila-l, probabil, această eroare a fost deja corectat.

Eroare la marca komadny pot fi cauzate și de o versiune incorectă a bibliotecii sau programul necesar. Această problemă este comună pentru pachete foarte noi sau foarte vechi. Verificați dependențele (ele obchno scrise pe site-ul programului), și compara numărul de versiune cu versiunea instalată pe computer (le puteți vedea obchno folosind managerul de pachete de distribuție dvs.). În cazul în care numărul de versiune a sistemului dvs. mai mult decât ceea ce este scris pe site-ul, probabil, pe care încercați să alcătuiască un pachet foarte vechi. Dacă deysvitelno nevoie să-l compilați, încercați să instalați versiunile mai vechi ale paketov.Kak dependente altceva nebylo, în general, mai bine să caute un alt mod de a instala acest pachet sau să caute o alternativă. În cazul în care numărul versiunii în sistem este mai mică decât pe site-ul, puteți încerca să actualizați paket.Vy corespunzătoare mozhetepoprobovat actualizează biblioteca necesară sau să compileze mai vechi vesiyu programmy.Tak aceeași verificare poate avea deja acest pachet compilate pentru avshego de distribuție. Instalarea sa este de obicei mai ușor decât corectarea erorilor de compilare.

Un alt lucru pentru a încerca - o căutare pentru eroarea specifică pe internet. Dacă nu puteți găsi ceva util, încercați să eliminați lucruri, cum ar fi numărul liniei (se poate schimba cu noua versiune), numărul versiunii (acesta poate fi înlocuit cu un asterisc în cazul în care este conținut în numele programului) și caractere speciale, cum ar fi citate, deoarece acestea afectează serviciul de căutare. Puteți găsi, de obicei, o mulțime de informații în lista de corespondență. Uneori iese un patch care corectează erorile din codul sursă. Acesta poate fi aplicat mod sludeyuschim:

] $ Patch -Np1

Nu uitați să aplicați un plasture, curentul trebuie să fie directorul sursă.

Erori în timpul make install

Aceste erori sunt de obicei ușor de înțeles, dar eu încă mai scrie despre ele. Există două cele mai comune caz, de ce comanda make install returnează o eroare:

Nu aveți privilegii de root. Încercați să rulați comanda make install folosind comanda sudo, sau devin root folosind comanda su. Comanda sudo este utilizat după cum urmează:

] $ Sudo make install

Acesta solicită parola; de obicei, utilizează propria parolă sau parola de root. Puteți isplzovat comanda su, polpovatelem pentru a deveni root:

Această comandă va cere, de asemenea, o parolă, dar în acest caz parola de root naobhodim. După ce ați devenit utilizator root, trebuie doar să rulați make install.

Pachetul pe care tocmai l-ați compilat are comanda de setare. În acest caz, trebuie să copiați fișierul binar compilat în directorul bin manual. Dacă executați comanda ls în directorul sursă, executabil trebuie să fie de culoare verde deschis. Acesta trebuie să fie copiat în / usr / bin (sau, dacă preferați, în / usr / local / bin) următoarea comandă:

] $ Cp / Usr / bin

Sunt de acord că acest lucru nu este întotdeauna cel mai simplu mod, dar uneori dezvoltatorii nu petrec timp pentru a crea comanda de setare. Noi nu ar trebui să fie supărat pe ei pentru acest lucru: în primul rând, deoarece ele fac program util pentru noi.

Iată alte câteva probleme posibile și soluțiile lor:

Totul merge bine, dar când am tastați numele programului pe care tocmai a fost stabilit, bash-ul spune că nu o poate găsi. Acest lucru se întâmplă de obicei din cauza faptului că make install seturi all-in / usr / local sau în / opt /. Uită-te la ieșirea de make install: în cazul în care ați copiat fișierele? Încercați dobvavit acest director la calea de (următorul exemplu este dat pentru pachetul instalat în / usr / local):

Trebuie să înlocuiți / local / bin / usr la directorul în care ați instalat executabilele coletului. Dacă funcționează, adăugați această linie la / etc / profile, astfel încât să nu trebuie să-l introduceți de fiecare dată. Apropo, puteți controla locația în cazul în care pentru a instala pachetul introducând următoarea opțiune atunci când rulează script-ul de configurare:

Schimba directorul / usr unde doriți să instalați pachetul. Nu uita că ești doar un prefix; binaries va instala în subdirector în bibliotecă, fișierele antet din etc dvs. De exemplu, atunci când se utilizează prefixul specificat, fișierele binare sunt instalate în / usr / bin.

Vreau să instalați o versiune foarte veche a pachetului, dar nu pot găsi codul sursă de pe Internet. Încă mai ai o șansă mică. Încercați să găsiți fișierul pachetului rpm este versiunea pe care doriți și descărcați fișierul corespunzător rpm src. Dezarhivați-l după cum urmează:

] $ Rpm2cpio | cpio -idv

Acum puteți utiliza codul sursă extras din fișierul rpm.