for static debug you need this file
libsfml-graphics-s-d.a
of course you link it like this
sfml-graphics-s-d
for static release you need this file
libsfml-graphics-s.a
and you link it like this
sfml-graphics-s
same with all the other sfml files
edit:
you always need this
#include <SFML/Graphics.hpp>
your program uses certain sfml functions, methods and classes
your program needs to know what those functions, methods and classes look like
what parameters do they take ? what do they return ?
an integer ? a float ?
the compiler needs to look up these definitions
so it looks in a .hpp or .h file
otherwise it would have no idea what an sf::RenderWindow is
so this line
#include <SFML/Graphics.hpp>
literally does a copy of this code
https://github.com/SFML/SFML/blob/master/include/SFML/Graphics.hpp and pastes it into your file
now your compiler knows what each function, method and class looks like
from my noob understanding linking is like giving your compiler an address book
the lib (or .a file) tells your compiler the address of the functions and methods you're using
so the .hpp gives it a definition
then the dll gives it the actual code
but its just one huge block of code, so the linking tells the compiler to use an import library to look up the address of each function in the dll (or in the static lib)
http://stackoverflow.com/questions/913691/dll-and-lib-files-what-and-whyhttps://www.quora.com/Why-do-I-need-a-LIB-file-for-my-C++-linkerso EVERY time you build an sfml program you must include and link and tell your compiler the location of everything
like the commands here show you
http://www.sfml-dev.org/tutorials/2.4/start-linux.php or do it in codeblocks or visual studio (but you still have to do it every time)
but now once your program is running it needs the sfml code (if it was compiled dynamically)
so you put the dlls somewhere in your path or in the same folder as your .exe