Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

OS Linux

i486 Compileren van packages

Bilbo
10 antwoorden
  • Als ik een make doe dan maak ik (zover ik weet) een i386 package.
    Maar hoe zorg ik er eigenlijk voor dat het i486 wordt? :oops:
  • is in principe kwestie van het configure script aan te roepen met de CFLAGS environment variabele op de juiste waarde.
    bv. het commando
    [code:1:ef70ff15d6]
    CFLAGS="-O2 -march=i486" ./configure
    [/code:1:ef70ff15d6]
    zou een makefile moeten aanmaken waarin de juiste optimalisaties voor 486 staan.
    Als er geen configure script aanwezig is zal je zelf de makefile moeten aanpassen, vaak staat daar bovenaan ergens een CFLAGS variabele gedefinieerd, maar dat verschilt van makefile tot makefile.
  • Dus je zet een omgevings variabele?
    Wat doet die 02 (nul 2?)
  • man gcc ;-)
    O2 is O 2, dus de letter O (van optimization)
    Hoe hoger het nummer erachter, hoe meer optimalizaties er gedaan worden door gcc.
    Een hogere waarde dan 3 is niet aan te raden want dat levert in sommige gevallen foute codegeneratie op (dus dan werkt je programma niet goed).
    Hogere optimalizatie maakt het compileren ook trager, de waarde 2 wordt als een goed compromis aanzien en wordt voor de slackware packages gebruikt dacht ik.

    Met het commando dat ik opgaf (CFLAGS="blabla" ./configure) is het zetten van de environment variabele enkel van toepassing voor het commando dat er achter komt (./configure dus). Dat is hetgeen wordt gebruikt in de slackware build scripts, je kan die misschien eens bestuderen (staat gewoon bij elke package in de slackware source tree). Je kan normaal gezien ook de CFLAGS variabele globaal zetten; dus iets alla
    [code:1:cf7b652330]
    export CFLAGS="blabla"
    ./configure

    [/code:1:cf7b652330]

    en dan zou het normaal gezien ook van toepassing moeten blijven op de programma's die je nadien nog vanuit dezelfde shell compileert.
  • Snap het….. dank je wel voor de uitleg.
    Je krijgt een changelog credit ;)
    [code:1:1aaea708c0]
    - /usr/src/clamav/clamav.SlackBuild added CFLAGS="-O2 -march-i46" to
    the ./configure command/
    So now I do not only claim to have an i486 package, but it actually
    is.
    Thank you Bamboe for explaining CFLAGS to me.
    [/code:1:1aaea708c0]
  • Lol, Bilbo Volkerding ;).
  • [quote:cb5492d398="Bamboe"]Een hogere waarde dan 3 is niet aan te raden want dat levert in sommige gevallen foute codegeneratie op (dus dan werkt je programma niet goed).[/quote:cb5492d398]

    Hoger dan 3 kan ook niet:
    Van http://freshmeat.net/articles/view/730/
    [quote:cb5492d398][b:cb5492d398]I use -O69 because it is faster than -O3.[/b:cb5492d398]

    This is wrong!

    The highest optimization is -O3.

    From the GCC 3.2.1 manual:

    -O3 Optimize yet more. -O3 turns on all optimizations
    specified by -O2 and also turns on the
    -finline-functions and -frename-registers options.

    The most skeptical can verify this in gcc/topolev.c:


    /* Scan to see what optimization level has been specified.
    That will determine the default value of many flags. */

    -snip-

    if (optimize >= 3)

    {

    flag_inline_functions = 1;

    flag_rename_registers = 1;

    }


    If you are using GCC, there's no point in using anything higher than 3. [/quote:cb5492d398]

    [quote:cb5492d398]Hogere optimalizatie maakt het compileren ook trager, de waarde 2 wordt als een goed compromis aanzien en wordt voor de slackware packages gebruikt dacht ik.[/quote:cb5492d398]

    Een ander nadeel van O3 is dat de binary groter wordt. Dat kan resulteren in een cache penalty waardoor het programma trager draait dan zonder O3.
  • [quote:09b3be49ef="danieldk"]Lol, Bilbo Volkerding ;).[/quote:09b3be49ef]

    Een package beheren is een serieuze bezigheid hoor ;)
  • Is het overigens niet zo dat de Slackware packages tegenwoordig worden gebouwd met
    [code:1:7bb294ed8e]
    CFLAGS="-O2 -march=i486 -mcpu=i686"
    [/code:1:7bb294ed8e]

    Mcpu geeft namelijk aan dat de package wel geoptimaliseerd mag worden voor i686, maar niet op een dergelijke wijze dat hij onder de genoemde march niet meer zou werken. Zo zorg je voor een preformence boost op sneller CPU's zonder iets af te doen aan de snelheid op 486's.
  • Idd, maar Bilbo wou weten hoe hij packages voor een 486 maakt ;)
    Maar die -mcpu optie is idd aan te raden. Alhoewel het verschil amper merkbaar is…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.