If you are calling zgetrf from fortran and use the same compiler, this is weird.if you are calling zgetrf from C, the name of zgetrf in the lapack.a library might not be zgetrf_.type something like: " nm lapack.a | grep -i zgetrf " and try to see what the symbol for zgetrf is, this is what you need to use in your C code( another way is to use the lapacke wrapper , if configure correctly, it will do this automatically )