Alright, let me make sure I understand your question first:
Right now, you've got a battleship program that displays its grid on the console by printing out characters, and you want to make a graphical interface that displays the ships with pictures. You want something that will work on Linux.
Let me know if that's not what you are looking for.
Going from a command line program to one with a graphical interface can be a pretty sizable jump. You've probably noticed that C++ doesn't have a standard GUI library, like it has iostream for console IO. So you'll need to pick a seperate GUI toolkit. On Linux, you've several choices, including
gtk,
Qt, and
wxWidgets. Each library has a tutorial on its website, so I encourage to try working through them to get an idea of the sort of programming involved. You can also look through their documentation to check if the libraries have the features you want.
The libraries I mentioned above aren't really designed specifically with games in mind, although, they are probably capable of doing what you want.
SDL is a different sort of library geared more towards game development. It is also capable of doing what you want, but if you look at its tutorial, you'll see it does thing in a very different manner than the other libraries I mentioned, and its capablities are also different. I'm not going to recommend a specific choice, but instead encourage you to look at all of them and pick the one that suits your need best.