Compress .hex file for micro-controller
You can not compress the hex code, you can only try to reduce it. 


Try different? compiler settings (maximum optimization and optimize for size)
Pick your way through the source code and see what can be optimized or omitted. 
See if any unnecessary library code is pulled in. (It should not be, but who knows)


Good point from Jeroen3: Check if you need/have floating point. Especially functions like printf sometimes pull in the floating point code to be able to cope with printf("%f".... If you never use floating point numbers you don't need that.