So my first question would be which one would it be and how do i comile it.
If it was going to be a DLL you would know. A DLL is code that is all ready to be executed, so there is no compiling. What you do instead is load the library at some point, using system specific API calls, into RAM to be used by the executable. The person running the program needs to have the DLL being used on his computer.
What you showed us is almost an opaque pointer. Another way to say it is a pointer to an incomplete type. The details of the struct must be in a different file, so you need to include the extern keyword:
Code:
typedef extern struct gps *t_gps;
Now t_gps is an opaque pointer type: the thing that t_gps points to could be defined in any C source that #include your header.