a) means to sacrifice one thing for another OR for someone else's sake. E.g of first case: I gave up badminton for football (stopped playing the first to make time for something else). But more commonly used as case 2: I gave up smoking for my girlfriend's sake, because she doesn't smoke.
b) means to give up something as opposed to something else. E.g. I had to choose between giving up smoking and drinking, so I gave up smoking over drinking, as the latter is less smelly.
c) means to (after some time) stop hoping for something to happen. I waited for years for my old friend to apologise to me, but he didn't so I eventually gave up on him.
OR: I know I have made many mistakes, but please don't give up on me (keep believing that I will be better)
so actually, yeah, there are substantial differences in the meanings