ABI = Application Binary Interface. The ABI defines the run-time environment for the code executing on the processor. These can be registers which store critical values that are used to maintain the execution environment. More importantly, the ABI describes how arguments are passed from the calling code (caller) to a called function (callee). Some ABIs, on processors that have lots of registers, might pass the arguments to the callee in registers. Others might pass the arguments on the stack, while still others might copy the arguments to a chunk of memory called a "frame" that's referenced by a pointer register. In addition, the value returned by the called function to the caller might appear on the stack, or in a specific register.
Needless to say, if the ABI that the tools use doesn't precisely match the ABI that the libraries use, values are going to wind up in the wrong registers or in the wrong locations on the stack and the program instantly dies a horrible death.
---Tom