Avatar billede bambi Nybegynder
16. september 2005 - 23:36 Der er 10 kommentarer og
1 løsning

Compilere til i586 på VIA C3?

Jeg har en lille pc med en VIA C3 Ezra processor som jeg bruger som hjemmeserver.

Processoren indetificerer sig selv som en i686 arkitektur, men mangler to instruktioner i forhold til Intels i686 processorer. Og (mindst) en af disse instruktioner bruger gcc i i686 mode, hvilket kan få systemet til at ”fryse”.

Jeg forestiller mig at gcc vælge at generere kode til en i686 (den arkitektur processoren oplyser) hvis ikke andet bliver angivet, og min maskine er da også blevet frygtelig ustabil efter jeg har compileret og installeret daemontools og djbdns.

Så hvordan sikrer jeg mig at gcc genererer kode til en i586 i stedet? Helst uden at skulle ændre i alverdens makefiler.

Og hvordan ser jeg om nogen af de rpm-pakker jeg allerede har installeret er til i686 arkitekturen?
Avatar billede mfalck Praktikant
17. september 2005 - 13:43 #1
når du kører ./configure skal du sætte følgende:

CFLAGS="-O3 -fomit-frame-pointer -mcpu=i586 -march=i586" ./configure

så generer gcc kun kode til 586-arkitekturen.
Avatar billede bambi Nybegynder
17. september 2005 - 14:21 #2
Æv, nu er jeg jo for alvor nødt til at afsløre min uvidenhed... *G*

Hvad vil det sige at jeg "kører ./configure"?

Jeg har prøve at læse lidt rundt på nettet uden at blive meget klogere. Jeg er stadig på det niveau hvor jeg bare afvikler en eksisterende makefil eller installationsscript.
Avatar billede mfalck Praktikant
17. september 2005 - 14:27 #3
det fleste programmer du henter ned som source følger der et configure-script med når du pakker dem ud (jeg tænker her på filer som ender på .tar.gz (eller tgz som er det samme)).

At køre configure betyder ikke andet end at udføre ovenståede kommando fra kommandolinjen:
CFLAGS="-O3 -fomit-frame-pointer -mcpu=i586 -march=i586" ./configure
Avatar billede mfalck Praktikant
17. september 2005 - 14:27 #4
jeg _TROR_ at man kan sætte de samme parametre når man henter source-rpm'er ned.
Avatar billede bambi Nybegynder
18. september 2005 - 22:49 #5
Hmm, jeg kan ikke se nogle configure-scripts og jeg får blot en fejl når jeg giver den kommando du skriver. Mangler der ikke noget enten en kommando i starten af linjen eller en pipe/redirector i slutningen?
Avatar billede mfalck Praktikant
20. september 2005 - 12:12 #6
hvad er det du forsøger at oversætte - er det noget du har forsøgt før og hvordan gjorde du dengang ?
Avatar billede screem_brille Novice
23. september 2005 - 03:17 #7
kunne man forvente noet feedback i dine adre åbne spørgsmål ?
Avatar billede bambi Nybegynder
02. oktober 2005 - 18:39 #8
Både daemontools og djbdns kommer faktisk med et konfigurationsscript - det hed bare ikke præcis det du skrev. *G*

Jeg tilføjede de to argumenter "-mcpu=i586 -march=i586" til rækken af compilerdirektiver og oversatte programmerne, men der opstår stadig problemer af og til. Hvad gør de to første argumenter (-O3 -fomit-frame-pointer). Det ene program er i forvejen sat til at bruge -O2...
Avatar billede mfalck Praktikant
02. oktober 2005 - 18:43 #9
-O styrer hvormeget optimering GCC skal køre med. Omit-frame-pointer betyder at den sparer lidt plads i målfilen (programmet som du kører) men det er umuligt at debugge. Det er dog de færreste som kører debug og derfor kan man ligeså godt spare det
Avatar billede bambi Nybegynder
02. oktober 2005 - 19:08 #10
mfalck: Hvis du vil have point så læg et svar.
Avatar billede mfalck Praktikant
02. oktober 2005 - 19:10 #11
ok :-) glad for at det kom til at virke .. jeg håber på også på et tidspunkt at skulle lave den samme øvelse :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester