john desklamp
john desklamp

Reputation: 17

ld: symbol(s) not found for architecture

First of all I want to say I realise this has been asked a dozen times, and I've read countless solutions without any luck so therefore I'm asking again.

I'm using OS X Mavericks 10.9.5, writing in Sublime 3 and compiling using terminal with g++

I'm trying to compile this simple file (test.cpp)

#include <iostream>
#include <SDL2/SDL.h>

int main () {
    if(SDL_Init(SDL_INIT_VIDEO)) {
    std::cout << "I made it this far" << std::endl;
    }
    return 0;
}

Compiler line :

g++ test.cpp

This returns the error :

Undefined symbols for architecture x86_64:
    "_SDL_Init", referenced from:
         _main in test-ebbae4.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

So, I've tried adding a lot of different flags, -m32 only changes the result to throw Undefined symbols for architecture i386: and ld: symbol(s) not found for architecture i386

I've tried different -arch variations, but I can't seem to get it to work. also played around with -l -I flags but I'm not sure I know what they do/how they could help..

Does anyone have a clue what to do next?

EDIT : Some additional information. I've tried using the .framework for SDL2, that didn't change anything, currently I'm using SDL2 installed through compilation of the source. Headers located in usr/local/SDL2

Upvotes: 1

Views: 1540

Answers (1)

jww
jww

Reputation: 102245

g++ test.cpp

You should specify the SDL library, too:

g++ test.cpp -lsdl2

You might need to include a path if its not well known to the compiler driver:

g++ test.cpp -L/path/to/the/library -lsdl2


Upvotes: 2

Related Questions