Thank you for your quick answer.
So, from what I've read it is from the OS, because the OS handles the executable files in a different way the same executable can NOT run (compiled only once) in both Windows and Linux.
That is what I had learn.
I know how to compile, that's how I tested it

The thing is that I compile and code every day but I don't know much of the assembly and executable behind it, I mean, I have coded ASM, but I don't know... it's different.
And I was sure my file hadn't run and was the same CPU, so when ca0s said it was because of the CPU I knew it wasn't exactly like that.