Canon does make Linux drivers for at least some of their printers (like mine), but they can be hard to find. I can't remember exactly how I got to mine but I know it took a few attempts.
Maybe you're particularly unlucky though, because my Canon works perfectly with either the built in CUPS driver or the one from Canon.