[ld][g++][make] Kan inte länka in SDL...

Permalänk
Medlem

[ld][g++][make] Kan inte länka in SDL...

EDIT2: Visade sig att det förmodliget var GNU Linker som var boven, Instalerade Gold Linker (binutils-gold) och allt blev så bra..

EDIT: kom precis hem och där är samma på den stationära...

Hej jag har lite problem med att kompilera min kod, jag har kontrollerat att jag har alla libsdl paket och libsdl-*-dev paket som är relevanta.

har kollat att biblioteken är på rätt plats också...

detta problem började uppstå när jag uppgraderade till Ubuntu 11.10 på lapptopen, dock tror jag att det fungerar på min stationära med samma OS och bibliotek...

har även installerat om SDL bibliotek 5-6 ggr... no luck...

$ make g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/main.cpp -o obj/main.o g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/SDLWrapper.cpp -o obj/SDLWrapper.o src/SDLWrapper.cpp:82:3: varning: flerradskommentar [-Wcomment] src/SDLWrapper.cpp: I medlemsfunktion "void SDLWrapper::mainLoop()": src/SDLWrapper.cpp:103:8: varning: oanvänd variabel "eChar" [-Wunused-variable] g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/gameLogic.cpp -o obj/gameLogic.o src/gameLogic.cpp:32:6: varning: oanvänd parameter "invader" [-Wunused-parameter] src/gameLogic.cpp:66:6: varning: oanvänd parameter "player" [-Wunused-parameter] g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/gameObjects.cpp -o obj/gameObjects.o g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/gameObjectProjectile.cpp -o obj/gameObjectProjectile.o g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/gameObjectPlayer.cpp -o obj/gameObjectPlayer.o g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/gameObjectInvader.cpp -o obj/gameObjectInvader.o g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/gameObjectExplotion.cpp -o obj/gameObjectExplotion.o ar rs obj/gameObjects.a obj/gameObjects.o obj/gameObjectProjectile.o obj/gameObjectPlayer.o obj/gameObjectInvader.o obj/gameObjectExplotion.o ar: creating obj/gameObjects.a g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf obj/main.o obj/SDLWrapper.o obj/gameLogic.o obj/gameObjects.a -o bin/invaders obj/SDLWrapper.o: In function `SDLWrapper::convertImage(SDL_Surface*)': /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:24: undefined reference to `SDL_DisplayFormatAlpha' obj/SDLWrapper.o: In function `SDLWrapper': /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:42: undefined reference to `SDL_Init' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:43: undefined reference to `TTF_Init' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:45: undefined reference to `TTF_OpenFont' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:47: undefined reference to `SDL_SetVideoMode' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:53: undefined reference to `TTF_RenderText_Solid' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:57: undefined reference to `IMG_Load' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:60: undefined reference to `IMG_Load' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:63: undefined reference to `IMG_Load' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:66: undefined reference to `IMG_Load' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:69: undefined reference to `SDL_FreeSurface' obj/SDLWrapper.o: In function `~SDLWrapper': /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:84: undefined reference to `SDL_FreeSurface' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:85: undefined reference to `SDL_FreeSurface' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:86: undefined reference to `SDL_FreeSurface' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:87: undefined reference to `SDL_FreeSurface' obj/SDLWrapper.o:/home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:88: more undefined references to `SDL_FreeSurface' follow obj/SDLWrapper.o: In function `~SDLWrapper': /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:90: undefined reference to `TTF_CloseFont' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:91: undefined reference to `TTF_Quit' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:92: undefined reference to `SDL_Quit' obj/SDLWrapper.o: In function `SDLWrapper::mainLoop()': /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:111: undefined reference to `SDL_GetTicks' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:113: undefined reference to `SDL_PollEvent' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:215: undefined reference to `SDL_Flip' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:216: undefined reference to `SDL_FillRect' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:218: undefined reference to `SDL_GetTicks' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:219: undefined reference to `SDL_GetTicks' /home/dev/bzr/invaders-sdl/src/SDLWrapper.cpp:219: undefined reference to `SDL_Delay' obj/gameObjects.a(gameObjectPlayer.o): In function `gameObjectPlayer': /home/dev/bzr/invaders-sdl/src/gameObjectPlayer.cpp:28: undefined reference to `SDL_GetTicks' obj/gameObjects.a(gameObjectPlayer.o): In function `gameObjectPlayer::draw(SDL_Surface*)': /home/dev/bzr/invaders-sdl/src/gameObjectPlayer.cpp:57: undefined reference to `SDL_UpperBlit' obj/gameObjects.a(gameObjectPlayer.o): In function `gameObjectPlayer::shoot()': /home/dev/bzr/invaders-sdl/src/gameObjectPlayer.cpp:71: undefined reference to `SDL_GetTicks' /home/dev/bzr/invaders-sdl/src/gameObjectPlayer.cpp:73: undefined reference to `SDL_GetTicks' collect2: ld returnerade avslutningsstatus 1 make: *** [default] Fel 1

Makefile:

CXX=g++ BINARY=bin/invaders CXXFLAGS=-W -Wall -o0 -g SDLFLAGS=`sdl-config --cflags --libs` -lSDL_image -lSDL_ttf default: obj/main.o obj/SDLWrapper.o obj/gameLogic.o obj/gameObjects.a $(CXX) $(CXXFLAGS) $(SDLFLAGS) $^ -o $(BINARY) ############# CREATING OBJECT FILES #### obj/main.o: src/main.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ obj/SDLWrapper.o: src/SDLWrapper.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ obj/gameLogic.o: src/gameLogic.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ ## need to create an archive... stupid shit.. obj/gameObjects.a: obj/gameObjects.o obj/gameObjectProjectile.o \ obj/gameObjectPlayer.o obj/gameObjectInvader.o obj/gameObjectExplotion.o ar rs obj/gameObjects.a $^ ## Files te create archive. obj/gameObjects.o: src/gameObjects.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ obj/gameObjectProjectile.o: src/gameObjectProjectile.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ obj/gameObjectPlayer.o: src/gameObjectPlayer.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ obj/gameObjectInvader.o: src/gameObjectInvader.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ obj/gameObjectExplotion.o: src/gameObjectExplotion.cpp $(CXX) $(CXXFLAGS) $(SDLFLAGS) -c $^ -o $@ ############# TEST STUFF AND CLEANING #### test: echo $(CXX) $(CXXFLAGS) $(SDLFLAGS) -o $(BINARY) $(OBJECTFILES) .PHONY: clean run .IGNORE: clean run clean: rm src/*.*~ rm obj/*.o rm obj/*.a rm $(BINARY) run: ./bin/invaders

SDLWrapper.cpp

#include <iostream> #include <vector> #include <string> #include <cstdlib> #include <SDL.h> #include <SDL_image.h> #include <SDL_ttf.h> #include "SDLWrapper.h" #include "gameLogic.h" #include "gameObjects.h" #include "gameObjectProjectile.h" #include "gameObjectPlayer.h" #include "gameObjectInvader.h" SDL_Surface* SDLWrapper::convertImage(SDL_Surface *inSurf){ //Converts Images to correct bit depth. // do not forget to free the old surface if needen.. SDL_Surface *newSurf; if(inSurf != NULL){ newSurf = SDL_DisplayFormatAlpha(inSurf); }else{ printf("Some shit when down when trying to convert image...\n"); printf("Is the image loaded?\n"); exit(EXIT_FAILURE); } printf("image loaded\n"); return newSurf; } SDLWrapper::SDLWrapper(){ //Constructor for class... //Itit some stuff... ScreenHeight = 480; ScreenWidth = 640; printf("onloading...\n"); SDL_Init(SDL_INIT_EVERYTHING); TTF_Init(); font = TTF_OpenFont("media/fonts/ubuntu-font-family/UbuntuMono-B.ttf", 24); screen = SDL_SetVideoMode(ScreenWidth, ScreenHeight, 8, SDL_HWSURFACE | SDL_DOUBLEBUF); colorWhite.r =255; colorWhite.b =255; colorWhite.g =255; textScore = TTF_RenderText_Solid(font, "Score: 0", colorWhite); SDL_Surface *tmpimage; //somewhare te store the images temorarely.. tmpimage = IMG_Load("media/images/player.png"); playerImage = convertImage(tmpimage); tmpimage = IMG_Load("media/images/invader.png"); invaderImage = convertImage(tmpimage); tmpimage = IMG_Load("media/images/explosion.png"); explotionImage = convertImage(tmpimage); tmpimage = IMG_Load("media/images/projectile.png"); projetileImage = convertImage(tmpimage); SDL_FreeSurface(tmpimage); //freeing the temp image.. isRun = (true); player = new gameObjectPlayer(100, 100, ScreenWidth/2,\ (ScreenHeight/2)+(ScreenWidth/4), playerImage); printf("everything onloaded \n"); } SDLWrapper::~SDLWrapper(){ //free willy! \o/.... sorry free the surfaces.. // | // / \ printf("offloading...\n") SDL_FreeSurface(playerImage); SDL_FreeSurface(invaderImage); SDL_FreeSurface(explotionImage); SDL_FreeSurface(projetileImage); SDL_FreeSurface(screen); TTF_CloseFont(font); TTF_Quit(); SDL_Quit(); printf("everything offloaded...\n"); } void SDLWrapper::mainLoop(){ printf("mainLoop\n"); const int FPS = 85; //Max FPS Uint32 fpsTimerStart; //0 up, 1 down, 2 left, 3 righ, 4 shoot, 5 quit bool eventBool[6] = {0, 0, 0, 0, 0, 0}; SDL_Event event; while(isRun){ fpsTimerStart = SDL_GetTicks(); SDL_PollEvent( &event ); switch(event.type){ case SDL_QUIT: eventBool[5] = 1; printf("exiting?\n"); break; case SDL_KEYDOWN: switch(event.key.keysym.sym){ case SDLK_ESCAPE: case SDLK_q: eventBool[5] = 1; break; case SDLK_UP: eventBool[0] = 1; eventBool[1] = 0; break; case SDLK_DOWN: eventBool[1] = 1; eventBool[0] = 0; break; case SDLK_LEFT: eventBool[2] = 1; eventBool[3] = 0; break; case SDLK_RIGHT: eventBool[3] = 1; eventBool[2] = 0; break; case SDLK_SPACE: eventBool[4] = 1; break; default: break; } break; case SDL_KEYUP: switch(event.key.keysym.sym){ case SDLK_ESCAPE: case SDLK_q: eventBool[5] = 0; break; case SDLK_UP: eventBool[0] = 0; eventBool[1] = 0; break; case SDLK_DOWN: eventBool[1] = 0; eventBool[0] = 0; break; case SDLK_LEFT: eventBool[2] = 0; eventBool[3] = 0; break; case SDLK_RIGHT: eventBool[3] = 0; eventBool[2] = 0; break; case SDLK_SPACE: eventBool[4] = 0; break; default: break; } break; } if(eventBool[5]){ //quit isRun = (false); } if(eventBool[3]){ //right player->move(1,0); } if(eventBool[2]){ //left player->move(-1,0); } if(eventBool[1]){ //domn player->move(0,1); } if(eventBool[0]){ //up player->move(0,-1); } if(eventBool[4]){ //shoot player->shoot(); } player->draw(screen); SDL_Flip(screen); SDL_FillRect(screen, NULL, 0x000000000); if(SDL_GetTicks() - fpsTimerStart < 1000/FPS ){ SDL_Delay(1000/FPS - (SDL_GetTicks() - fpsTimerStart)); } } }

gameObjectPlayer.cpp:

#include <iostream> #include <vector> #include <string> #include <cstdlib> #include <SDL.h> #include <SDL_image.h> #include <SDL_ttf.h> #include "SDLWrapper.h" #include "gameLogic.h" #include "gameObjects.h" #include "gameObjectProjectile.h" #include "gameObjectPlayer.h" #include "gameObjectInvader.h" gameObjectPlayer::gameObjectPlayer(int hitpoints, int damage, int x, int y,\ SDL_Surface *image){ mHitpoints = hitpoints; mDamage = damage; mX = x; mY = y; mRadius = 16; mObjectImage = image; shootTimer = SDL_GetTicks(); // store the timer shootTime = 200; // 0.2 sec } gameObjectPlayer::~gameObjectPlayer(){ //empty? } void gameObjectPlayer::move(int deltaX, int deltaY){ mX = deltaX + mX; mY = deltaY + mY; } int gameObjectPlayer::getRadius(){ return mRadius; } void gameObjectPlayer::giveDamage(int damage){ mHitpoints -= damage; } void gameObjectPlayer::draw(SDL_Surface *surface){ objectRect.x = mX - 16; //cus the image is 32x32, have to make it render in objectRect.y = mY - 16; //the middle of the image at mX and mY SDL_BlitSurface(mObjectImage, NULL, surface, &objectRect); } bool gameObjectPlayer::isDead(){ if(mHitpoints <= 0){ return true; } else { return false; } } void gameObjectPlayer::shoot(){ if(SDL_GetTicks() - shootTimer > shootTime && !isDead()){ printf("I shot!!\n"); shootTimer = SDL_GetTicks(); } } void gameObjectPlayer::setPos(int x, int y){ //set posision if needed. mX = x; mY = y; } int gameObjectPlayer::getX(){ return mX; } int gameObjectPlayer::getY(){ return mY; } int gameObjectPlayer::getDamage(){ return mDamage; }

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Du fick väll igång detta i förra tråden, det var väll du?
Vilken dator var det på då?

Permalänk
Medlem

har nu testat med ett simpelt program....

det värkar vara så att det inte äns fungerar då..

Har skrivigt en bugg rapport till libSDL:
https://bugs.launchpad.net/ubuntu/+source/libsdl1.2/+bug/8766...

så något är fel med GNU ld .... alt. libSDL..

men jag kan spela SDL spel...

EDIT:
Dessutom så var det innan jag uppgraderade...

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem
Skrivet av Gego:

har nu testat med ett simpelt program....

det värkar vara så att det inte äns fungerar då..
...
men jag kan spela SDL spel...

Det kommer inte att fungera med simplare program med SDL (så länge sdlfunktioner används) heller då det är länkningen det är fel på (av någon anledning).
Att du kan köra SDLspel har inget med saken att göra, då används färdigkompilerade och länkade filer och bör fungera utan större problem så länge du har drivrutiner installerade till grafikkortet. Jag vet inte om det är en bugg, eller ett litet skitfel som det brukar vara när man länkar

Själv är jag mest van vid windowsmiljön och där är det oftast väldigt enkelt att få grejer att funka, ofta behöver man inte läsa nåra instruktioner...

Permalänk
Medlem

Jag reverterade tillbaka några commits i koden och samma problem....

och inget skillnad...

kolla filerna som jag postade i buggrappporten.

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Allright, hoppas det löser sig förr eller senare, ev kanske det finns några ubuntustjärnor här som kan upptäcka om något är fel...

Permalänk
Hedersmedlem

Du länkar mot SDL_image och SDL_ttf; finns det inte en SDL också?

Permalänk
Medlem
Skrivet av Elgot:

Du länkar mot SDL_image och SDL_ttf; finns det inte en SDL också?

Jo. Skulle säga att SDLFLAGS bör ändras från:

SDLFLAGS=`sdl-config --cflags --libs` -lSDL_image -lSDL_ttf

till:
SDLFLAGS=`sdl-config --cflags --libs` -lSDLMAin -lSDL -lSDL_image -lSDL_ttf

Notera de fetmarkerade tillägen.
Tror ev. att SDLMain bara behövs för windows. Inte helt säker. Ett tag sedan jag pillade med C/C++ nu.

Permalänk
Medlem
Skrivet av trappski:

Jo. Skulle säga att SDLFLAGS bör ändras från:

SDLFLAGS=`sdl-config --cflags --libs` -lSDL_image -lSDL_ttf

till:
SDLFLAGS=`sdl-config --cflags --libs` -lSDLMAin -lSDL -lSDL_image -lSDL_ttf

Notera de fetmarkerade tillägen.
Tror ev. att SDLMain bara behövs för windows. Inte helt säker. Ett tag sedan jag pillade med C/C++ nu.

Nej, felet var att jag behövde binutils-gold för att kompilera skiten... IE: något fel med GNU Linker..

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Hedersmedlem
Skrivet av Gego:

Nej, felet var att jag behövde binutils-gold för att kompilera skiten... IE: något fel med GNU Linker..

Menar du att ovanstående inte fungerar (eller i alla fall förbättrar situationen), att binutils-gold fungerar eller båda?

Permalänk
Medlem
Skrivet av Elgot:

Du länkar mot SDL_image och SDL_ttf; finns det inte en SDL också?

det är det som

`sdl-comfig --cflags --libs`

är till för...

det blir nämligen:

-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/usr/lib -lSDL

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem
Skrivet av Elgot:

Menar du att ovanstående inte fungerar (eller i alla fall förbättrar situationen), att binutils-gold fungerar eller båda?

Nu Kan jag skriva make och det bygger projektet..

dvs: nu fungerar det...

och att något är fel med GNU Linker (skulle jag tro) för Gold Linker ändras till standard ld (byter ut sig mot GNU Linker).

(Svenska bra idag?)

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Hedersmedlem
Skrivet av Gego:

det blir nämligen:

-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/usr/lib -lSDL

Nja, den verkar inte expandera uttrycken ordentligt:

g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/main.cpp -o obj/main.o

Eller ja, det är kanske inte nödvändigt att make gör det.

Permalänk
Medlem
Skrivet av Elgot:

Nja, den verkar inte expandera uttrycken ordentligt:

g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/main.cpp -o obj/main.o

Har du arbetat med Makefiles förut?

make bara echo:ar ut bet som står i skriptet...

och det tas sedan hand om någon form av shell. Skulle tro att GCC har någon sådan funktion.

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Hedersmedlem
Skrivet av Gego:

och det tas sedan hand om någon form av shell. Skulle tro att GCC har någon sådan funktion.

Det verkar ju uppenbarligen inte fungera (och det verkar typiskt vara lSDL som saknas (och att det bara skulle fungera med binutils-gold låter osannolikt)).

Permalänk
Medlem
Skrivet av Elgot:

Det verkar ju uppenbarligen inte fungera (och det verkar typiskt vara lSDL som saknas (och att det bara skulle fungera med binutils-gold låter osannolikt)).

Men det fungerar och det är så som jag alltid har skrivit...

Kolla tutorials:
http://gamedevgeek.com/tutorials/getting-started-with-sdl/
Kolla under titeln "Compiling"

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Medlem

Du kan inte packa hela sourcen och slänga upp?
Kan testa på Ubuntu 10.04 och se huruvida det fungerar där isf.

Permalänk
Medlem

om det fungerar så fungerar det, kan även starta spelet som spottas ut..

Visa signatur

@gegoxaren på identi.ca
min personliga Blag ^_^
#python #cSharp #php #sqlite #freetard #loonix

Permalänk
Skrivet av Elgot:

Det verkar ju uppenbarligen inte fungera (och det verkar typiskt vara lSDL som saknas (och att det bara skulle fungera med binutils-gold låter osannolikt)).

gcc kommer att skicka allt inom `sdl-config --cflags --libs` direkt till promten. Det vill säga att programmet sdl-config kommer att anropas med argumenten --cflags --libs. Utdatan från sdl-config kommer gcc att använda till att expandera det ursprungliga kommandot

g++ -W -Wall -o0 -g `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -c src/main.cpp -o obj/main.o

till följande

g++ -W -Wall -o0 -g -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/usr/lib -lSDL -lSDL_image -lSDL_ttf -c src/main.cpp -o obj/main.o

Permalänk
Medlem
Skrivet av Gego:

om det fungerar så fungerar det, kan även starta spelet som spottas ut..

Vore ju kul att veta varför det inte fungerade med det ena eller det andra...
Sedan vore det kanske till hjälp för nästa person som har problem och kan få någon hyfsad lösning genom detta.

Permalänk
Medlem

Du gör livet mer komplicerat än vad det behöver vara. Du behöver inte skapa en lib fil för dina gameobject. -o0 är ingen option, det är -O0 du vill ha (default). Du kastar på linking argument när du bara skall kompilera (sdl-config --libs, -lSDL_image, -lSDL_ttf) . Du kastar på kompileringsargument när du skall länka (sdl-config --cflags).

Med så lite kod kan du slänga allt på rad bara.

g++ -o bin/invaders -g -Wall `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf src/*.cpp

Den där gör allt det du vill och skall funka med vanliga gcc utan problem.

Visa signatur

Teeworlds - För dig som gillar gulliga saker med stora vapen.