It's well worth setting up the USB networking, and logging into the GP2X to run your programs - that way you get to see any errors they generate, and you can see if they exit or hang. Search for "Tcp/ip" on the wiki.
You can also run them through gdbserver and debug them. Search for "Gdb" on the Wiki for more information. Just running your program through the telnet session is a great help though, even if you don't bother with gdb, as you'll see any dynamic linking errors and you can add your own printfs to trace program flow.
Generally speaking, it's often necessary to link statically, as the libraries for your toolchain might not match those on the GP2X itself. However, if you're using an official SDK I would have thought they'd match, so this should be unnecessary. I don't know much about the official SDK though, I use open2x.