Toon posts:

compile probleem dan

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goed vergeet dat nvdia probleem dan ff :)

Bij het compilen van een bepaald programmazie ik rare code op mijn scherm verdwijnen.

/bin/sh: -c: line 1: syntax error near unexpected token `3.1)'
/bin/sh: -c: line 1: `if [ -z ]; then if [ 3.1) != 3.1 ]; then echo "
"; echo "You appear to be compiling the NVdriver kernel module with ";
echo "a compiler different from the one that was used to compile "; echo
"the running kernel. This may be perfectly fine, but there "; echo "are
cases where this can lead to unexpected behaviour and "; echo "system
crashes. "; echo "
"; echo "If you know what you are doing and want to override this ";
echo "check, you can do so by setting IGNORE_CC_MISMATCH. "; echo "
"; echo "In any other case, set the CC environment variable to the ";
echo "name of the compiler that was used to compile the kernel. "; echo "
"; echo -en "\033[1;31m"; echo -e "*** Failed cc sanity check. Bailing
out! ***"; echo -en "\033[0m"; exit 1; fi fi'
make: *** [gcc-check] Error 2


Waar het me ook omgaat is dat de ouput naar het scherm niet is zoals het hoort te zijn
code:
1
2
3
/bin/sh: -c: line 1: syntax error near unexpected token `3.1)'
/bin/sh: -c: line 1: `if [ -z ]; then if [ 3.1) != 3.1 ]; then echo "
"; echo " blablabla

terwijl dat gewoon een stukje leesbare tekst hoort te zijn
Iemand enig idee hoe dat komt?

Verwijderd

het ziet er naar uit dat je source brak is, aangezien je compiler een syntactische fout geeft

of je compiler is wat ziekies..

welk prog, welke compiler? misschien dat daar wat narigheid over bekend is dan..

Verwijderd

Topicstarter
Ik vergeet gewoon om de rest er bij te tikken zie ik.

Ik heb een nieuw lfs-systeem met gcc 3.1 geinstalleerd en probeer daarmee de nvidia driver te compilen. Mijn probleem zit hem niet in het feit dat dat compilen niet lukt maar dat de output naar het scherm zo raar is. Ik zou gewoon iets als dit moeten zien
code:
1
2
3
4
5
You appear to be compiling the NVdriver kernel module
 with a compiler different from the one that was used to
 compile the running kernel. This may be perfectly fine,
 but there are cases where this can lead to unexpected 
behaviour and system crashes.

Andere programma's compilen prima en wanneer ik vanuit een oud systeem (met gcc 2.95) chroot naar dit nieuwe systeem is de output wel goed dus zonder die rare syntaxen. Ligt dit dus aan gcc of aan nvidia?

Verwijderd

Zoals gezegd, probably de gcc-3.1 versie, je ziet ook dat het token 3.1) is, terwijl die volgens mij graag 3.1 had gezien...

Verwijderd

Topicstarter
Zoals gezegd, probably de gcc-3.1 versie, je ziet ook dat het token 3.1) is, terwijl die volgens mij graag 3.1 had gezien...
Als ik in een oud systeem chroot naar een ander systeem met een nieuwe gcc versie wordt toch die nieuwe gcc voor het compilen gebruikt??
Zo ja Hoe komt het dan dat in het 'geçhroote' systeem de compilatie wel lukt?

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 15-08 23:10

deadinspace

The what goes where now?

Oh, sorry, ik had niet door dat het je om die meldingen ging en niet zozeer om de nvidia drivers :)

En een hoop mensen hier hebben het over gcc 3.1, maar het is /bin/sh die hier klaagt (lees de eerste regel maar eens goed).

Post anders het relevante stukje van het script in kwestie eens?

Verwijderd

Je bedoelt neem ik aan remote inloggen... chroot werkt voor zover ik weet alleen lokaal :)
Maar idd als je remote inlogt zou ie ook de nieuwe versie moeten gebruiken. doe anders es `gcc --version` dan weet je zeker welke versie die wanneer gebruikt.
Op donderdag 13 juni 2002 00:30 schreef deadinspace het volgende:
Oh, sorry, ik had niet door dat het je om die meldingen ging en niet zozeer om de nvidia drivers :)

En een hoop mensen hier hebben het over gcc 3.1, maar het is /bin/sh die hier klaagt (lees de eerste regel maar eens goed).

Post anders het relevante stukje van het script in kwestie eens?
/bin/sh klaagt inderdaad. Die vind het versienummer van gcc niet leuk van wat ik kan opmaken uit de topicstarters post.

Verwijderd

Topicstarter
En een hoop mensen hier hebben het over gcc 3.1, maar het is /bin/sh die hier klaagt (lees de eerste regel maar eens goed).
Post anders het relevante stukje van het script in kwestie eens?
Ziet er als volgt uit
code:
1
2
3
4
5
6
7
gcc-check:
    @if [ -z $(IGNORE_CC_MISMATCH) ]; then \
     if [ $(kernel_cc) != $(module_cc) ]; then \
    echo "                                       "; \
    echo "You appear to be compiling the NVdriver kernel module with "; \
    echo "a compiler different from the one that was used to compile "; \
    echo "the running kernel. This may be perfectly fine, but there  "; \
Je bedoelt neem ik aan remote inloggen... chroot werkt voor zover ik weet alleen lokaal
Maar idd als je remote inlogt zou ie ook de nieuwe versie moeten gebruiken. doe anders es `gcc -- version` dan weet je zeker welke versie die wanneer gebruikt.
Nee...ik boot mijn oude systeem, mount het nieuwe systeem in een dir en chroot daarnaar toe.
code:
1
2
3
4
5
6
7
8
9
10
tony:~$ gcc --version
2.95.3
tony:~$ su
Password:
root:/home/tony# chroot /mnt/lfs
root:/# gcc --version
gcc (GCC) 3.1
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

daarbij opmerkend dat /bin/sh niet klaagt als ik vanuit de gechroote omgeving het script draai...........

Verwijderd

Ja, leuk (en aardig) maar nu weet je alleen dat de user in je oude systeem 2.95.3 gebruikt, en de root user 3.1 :) (als ik het mij goed herinner, tis al laat)
Als welke user probeer jij te compilen als je je chroot hebt uitgevoerd?
en anders `export IGNORE_CC_MISMATCH=1`
Draai je wel dezelfde shell-versies in beide (en dezelfde shells at all)

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Op donderdag 13 juni 2002 00:48 schreef Purplehouse het volgende:

[..]

Ziet er als volgt uit
code:
1
2
3
4
5
6
7
gcc-check:
    @if [ -z $(IGNORE_CC_MISMATCH) ]; then \
     if [ $(kernel_cc) != $(module_cc) ]; then \
    echo "                                       "; \
    echo "You appear to be compiling the NVdriver kernel module with "; \
    echo "a compiler different from the one that was used to compile "; \
    echo "the running kernel. This may be perfectly fine, but there  "; \

[..]
Ziet er naar uit dat de make variable kernel_cc met "3.1)" wordt gevuld.

Dus even opzoeken waar kernel_cc wordt gevuld en aanpassen :).

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Topicstarter
volgens mij moet zegt dit script zoiets als
optie 1. als IGNORE_CC_MISMATCH een waarde 1 heeft ga dan \
optie 2. als de kernel waarde niet gelijk is aan de module waarde ga dan ook \
zoniet echo blablabla

maar waar het omgaat is dat die output niet klopt....zoals gezegd heeft /bin/sh ergens een probleem mee

Verwijderd

Topicstarter
nog ff dit /bin/sh is bij mij een link naar bash ( versie 2.05a)

(morgen verder....mijn oogjes zijn moe)

  • Buffy
  • Registratie: April 2002
  • Laatst online: 26-12-2024

Buffy

Fire bad, Tree pretty

Op donderdag 13 juni 2002 01:16 schreef Purplehouse het volgende:
volgens mij moet zegt dit script zoiets als
optie 1. als IGNORE_CC_MISMATCH een waarde 1 heeft ga dan \
optie 2. als de kernel waarde niet gelijk is aan de module waarde ga dan ook \
zoniet echo blablabla

maar waar het omgaat is dat die output niet klopt....zoals gezegd heeft /bin/sh ergens een probleem mee
De gcc-check rule in de makefile probeert een shell script uit tevoeren dat indien IGNORE_CC_MISMATCH leeg is (en dus [ -z ] true oplevert) en de waarden van kernel_cc en module_cc ongelijk zijn, een waarschuwing bereicht echoot.

Echter /bin/sh geeft een foutmelding tijdens het parse van de shellscript string omdat er een onverwachte ')' in staat, nl 'if [ 3.1) != 3.1 ]'.

De shell returns vervolgens een error status ongelijk 0 wat er (o.a) voor zorgt dat de make wordt afgebroken.

Dit had verkomen kunnen worden als er in de makefile '"' was gebruikt rond $(kernel_cc) en $(module_cc) dan had er in de script string '[ "3.1)" != "3.1" ]' gestaan.

Echter de echte fout ontstaat volgens mij bij het vullen van de kernel_cc variable in de makefile.
Daar wordt tenonrechte een ')' aan gcc versie nummer 3.1 toegevoegd (of niet weggehaald :)).

That which doesn't kill us, makes us stranger - Trevor (AEon FLux)
When a finger points at the moon, the imbecile looks at the finger (Chinese Proverb)


Verwijderd

Ook niet raar dat er daar een fout ontstaat. gcc-3.1 levert met --version veel meer troep dan 2.95.3, het shell-script is dus gewoon kl*te geschreven. Oplossing waardoor de normale output van /bin/sh weer goed wordt is inderdaad quotes om die 2 waarden in de if statement gooien.

Verwijderd

Topicstarter
Mooi...zodra ik thuis kom ga ik dat eens proberen.....

Is ook iets om in het vervolg dus rekening mee te houden. Ik heb nu al van alles gecompileerd met die gcc versie (XFree86, kde3, apache etc) en dit is de eerste keer dat ik van die rare dingen zag gebeuren (buiten de normale problemen dan die je altijd hebt met compileren van source.)

Verwijderd

Hangt er een klein beetje vanaf welke versies van de software je hebt gecompileerd. Ik kan me herinneren van ff terug dat je geen kernel wou bakken met 3.0, wegens memory management perikelen.
Het is nooit onverstandig om het met een bewezen gcc versie te compilen. Daarom geeft die nvidia driver ook een waarschuwing af :)

Verwijderd

Topicstarter
klopt maar dit zijn in principe geen compile problemen blijkbaar (ik moet het nog wel ff proberen) maar een script probleem.

Verwijderd

In dit geval is het inderdaad een slecht geschreven script. :) Succes met het debuggen!

  • imdos
  • Registratie: Maart 2000
  • Laatst online: 05-08 12:09

imdos

I use FreeNAS and Ubuntu

Wat ik altijd deed/doe is zelf die string die teruggevoerd moest worden aanpassen door een eigen echo te geven met tweemaal dezelfde string.

Want die Nvidia kernel pakte ook een ignore_cc_mismatch niet :(

pvoutput. Waarom makkelijk doen, als het ook moeilijk kan! Every solution has a new problem


Verwijderd

Topicstarter
Goed....Script probleem is opgelost door er inderdaad gewoon 2 " omheen te zetten.

aardigheidje om te vermelden is dat ook die nvidia driver zonder verdere problemen of het zetten van strings compiled met gcc 3.1 ( en combreloc) :)

Verwijderd

Lijkt me omdat ie kijkt met welke gcc versie je kernel is gecompiled, en die mag niet verschillen van de versie waarmee je module wordt gecompiled. (Leid ik af uit de namen van de variabelen, heb het dus niet getest) Logisch dus als je een kernel met 3.1 hebt draaien dat ie dan ook de module goed vindt.
Pagina: 1