Unfortunately, most programs do care about the kernel, both directly and not.
Different operating systems have significant differences in even the most common features (epoll vs inotify vs kqueue, clone vs vfork vs rfork...).
Even if the program sticks to minimal features that look the same to userspace (e.g. stdio, basic file access), it (or rather, the libc) still needs to know how to call those functions in the kernel, which is completely different between Linux (plain old syscalls) and OS X (a mix of syscalls and Mach IPC).
And that's assuming you can get the kernel to start executing the program in the first place – the OS X kernel does not understand the ELF format, only Mach-O (plus all sorts of legacy Mac OS stuff).
Various emulators exist – for example, FreeBSD has Linux emulation, and Wine runs Windows programs on Unixes, and there seems to be an OS X emulator for Linux – but I couldn't find any that would run Linux programs on OS X.
Here's a description of how basic Linux functions are emulated on FreeBSD.