Gå til innhold

Problemer med g++ i slackware


Anbefalte innlegg

Har nettopp lagt inn slackware 10.0 på en maskin her.

Men jeg får ikke helt til g++.

 

g++ main.cpp -o program
sh program
program: program: cannot execute binary file

Hvorfor får den ikke til det?

Det samme skjer hvis jeg kompilerer en fil i kdevelop.

Den kompileres og kjøres i kdevelop, men prøver jeg å åpne filen etterpå i terminal sier den bare

"program: program: cannot execute binary file"

 

Er det noe jeg gjør feil eller?

Lenke til kommentar
Videoannonse
Annonse

sh er en binærfil faktisk. Ofte ligger ikke current directory i PATH, derfor jeg prefikset med './' (. er current directory) bare så det er sagt. For å starte et program ditt_prorgram som ligger i /usr/bin f.eks kan du skrive /usr/bin/ditt_program, sh ligger som regel i /bin så du kan skrive /bin/sh.

Lenke til kommentar

Du, nå har jeg et nytt problem.

Jeg får ikke til SDL..

 

Har lastet ned sourcen til versjon 1.0.8 og fulgt instruksjonene.

Men den få masse feil når jeg prøver å kompilere eksemplene.

 

Først så fikk jeg masse error's med "undeclared bla bla bla",

men det var fordi den ikke fant SDL.h

Så fiksa jeg det, men nå får jeg masse feil med

"Undefined reference to 'SDL_XXXX'

 

Jeg har prøvd både g++ testxxxx.c og gcc testxxxx.c

Lenke til kommentar

Du må kompilere selve biblioteket før du kompilerer eksemplene (eller egen kode). Undefined reference er en linkerfeil og betyr at den ikke finner biblioteket.

 

Det anbefales å bruke distribusjonens eget pakkesystem når du installerer programvare og biblioteker - da det er lettere å vedlikeholde.

Lenke til kommentar

<BøNilzen>: Fikk du til å kjøre filen? Hvis ikke kan du ta en titt på umasken din. Den bestemmer hvilke rettigheter som fjernes fra nye filer du oppretter. Men den kanskje vanligste umasken er 022, som ikke fjerner noen rettigheter fra filer du lager selv -- du kan altså kjøre filene uten noe mer fikkel.

 

For å kompilere med SDL sørger du for at headere er på riktige steder (Legg dem i /usr/include, og lag en symlink: ln -s /usr/include /usr/include/SDL ), at bibliotek-filene er i linkerens PATH (Sørg for at /usr/local/lib er i /etc/ld.so.conf, og så må du kanskje kjøre ldconfig etter å ha installert SDL). Sist, men ikke minst -- du må kompilere slik:

 

g++ -o minfil minfil.cpp `sdl-config --cflags --libs`

 

Note: ` er det som på godt norsk kalles "backticks". Produseres på norske tastaturer ved å trykke shift+tasten til venstre for backspace, og så mellomrom.

 

 

PS: :thumbup: til at du har lagt inn Linux :)

Lenke til kommentar

Vil bare understreke at i distroer med gode pakkesystemer er det best å benytte seg av pakkesystemet. Slackware har dårlig med pakkesystem, så ./configure && make && make install er måten å gjøre det på.

 

 

Edit: Post 404: Post not found. :]

Endret av Myubi
Lenke til kommentar
Du bør legge inn SDL først vha. sekvensen
./configure
make
make install

Du er nødt til å være superbruker for å kunne utføre make install (bibliotek og headere legges inn i filsystemet).

Joda, dette har jeg gjort selvfølgelig.

 

Men jeg skal prøve å kompilere sånn som du sa myubi!

 

PS: :thumbup: til at du har lagt inn Linux

Det er lenge siden.

Har hatt red-hat en stund men den var jeg lei av nå.

 

Edit:

Funka!! Takker så mye myubi

Endret av <BøNilzen>
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...