Sida 1 av 1

open3600

Postat: 15 jul 2008, 01:08
av BeMa
Hej

Behöver hjälp av någon som kan gcc (bättre än mig). Jag kör open3600 ( http://open3600.fast-mail.nl/tiki-index.php ) mot min väderstation, en WS3600 från Lacrosse. Jag kör mysql3600 som plockar värden och stoppar in den i en tabell direkt. Allt funkar smärtfritt på min gamla dator, en PII som går med fedora 4 (32 bitar). open3600 är där kompilerad med

gcc (GCC) 4.0.2 20051125 (Red Hat 4.0.2-8)
Copyright © 2005 Free Software Foundation, Inc.

Den nya maskinen går med Fedora 8, 64 bitar på en E8200, gcc är här

gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)
Copyright © 2006 Free Software Foundation, Inc.

Problemet är att kompileringen går smärtfritt (exakt samma varningar som på den gamla) på den nya maskinen men programmen funkar ej. Har provat med flaggorna -m32 och -m64 (fick då ändra lite länkningar i Makefile vid -m64) men negativt resultat :( ..

När jag kör programmen så slukar de nästan 40-60% av processon men inget händer, inga felmeddelanden...

Binärer kompilerade på den gamla datorn funkar på den nya, utom mysql3600 (den jag vill ha) tror det är länkning till något bibliotek som blir fel version...

Jag ser att filerna blir lite olika stora mellan maskinerna...

Frågor,
Finns det "default" flaggor som skiljer mellan de två gcc versionerna ?
Sätts några flaggor på ett visst sätt bara för jag kör x86_64 versionen ? Borde det inte fungera med -m32 då ?
Kan man köra någon debug för att se var progammet fastnar ?

Som sagt, jag är helt ute o cyklar på detta problem...

Tacksam för alla tips....

Re: open3600

Postat: 05 okt 2008, 23:50
av BeMa
Hej

Tog tag i problemet nu och det visade sig att den nya versionen av kompilatorn plockade bort en fördröjning i koden.

void delay_loop(unsigned long count)
{
do {} while (--count);
}

Jag gjorde en fuling (bättre sätt finns förmodligen)..

void delay_loop(double count)
{
do {} while (--count);
}

och då fungerade det...