Program fungerar på en dator men inte på andra

Permalänk
Medlem

Program fungerar på en dator men inte på andra

Jag har gjort ett program i C med OpenGL och GLUT.
Det fungerar som det ska på datorn jag skrev programmet på.
Den kör 64-bitars versionen av Ubuntu 10.04.
När jag kopierar filerna till min netbook som kör 32-bitars versionen av Kubuntu så kan jag inte öppna den binära filen.
Det går att kompilera, men när jag startar programmet får jag segmenteringsfel.
Jag provade då att kopiera filerna till min bärbara dator som också kör 64-bitars versionen av Ubuntu 10.04.
Där går den binära filen att öppna, men alla texturer är borta. Samma resultat om jag kompilerar.
Jag har inte glömt några filer då jag har kopierat hela katalogen inklusive underkataloger med texturer.
Jag provade kompilera ett annat program och där fungerade texturerna.
Jag har kollat i synaptic och alla datorer har freeglut, libjpeg och gcc.

Vad kan det vara för fel?

Permalänk

Rensade du ut alla gamla o-filer innan du kompilerade programmet på nytt?

Vilka versioner av OpenGL stödjer maskinerna och vilken version har du skrivet programmet för?

glxinfo | grep version

borde ge dig vilken version maskinen stödjer.

Permalänk
Medlem

Om du segfaultar kan det ju vara lämpligt att du kollar var det gör det med en debugger. Du kanske inte har räknat med att typer får olika storlek på olika platformar (long t.ex.)

Visa signatur

void@qnet
teeworlds, stålverk80, evil schemer, c, c++
Languages shape the way we think, or don't.

Permalänk
Medlem

Har kollat vilken opengl version.
Stationära 3.2.9756
Netbooken 1.4
Laptopen 1.5

Alla tidigare program föutom de med vertex och fragment shaders har fungerat på netbooken och det här programmet använder inte shaders.
Det konstiga är att jag inte får några texturer på laptopen när jag använt samma metod som för program där texturerna fungerar. Det står dessutom att den har läst in texturfilerna, om jag anger en fil som inte finns så startar inte programmet.
Jag har provat att lägga in glEnable(GL_TEXTURE_2D); på fler ställen i koden men det hjälpte inte.

Programmet läser in en fil och och använder strlen() för att räkna ut längden på en rad.
På netbooken så blir värdet 1 mindre än på den stationära och laptopen.
Jag försökte med att öka värdet med 1 i koden men fick fortfarande segmenteringsfel.