http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51522
--- Comment #3 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2012-01-09 13:38:38 UTC --- With the following change --- pr51522.f90 2011-12-13 00:17:20.000000000 +0100 +++ pr51522_db.f90 2012-01-09 12:15:44.000000000 +0100 @@ -265,9 +266,11 @@ interface integer(c_int) function vect_Utils_vuIsUnit_c(u, tol, exception) bind(c) use, intrinsic :: iso_c_binding end function vect_Utils_vuIsUnit_c - integer(c_int) function vect_Utils_vuTriIneqHolds_c(u, v, tol, exception) & + integer(c_int) function vect_Utils_vuTriIneqHolds_c(u, v, tol, exception) use, intrinsic :: iso_c_binding + end function vect_Utils_vuTriIneqHolds_c real(c_double) function vect_Utils_vuNorm_c(u, tol, badLevel, exception) bind(c) + use, intrinsic :: iso_c_binding end function vect_Utils_vuNorm_c end interface end module vect_Utils_F03 the code compiles (with a lot of warnings), but complains at link time: Undefined symbols: "_main", referenced from: start in crt1.10.6.o "_vect_Utils_getEPV", referenced from: ___vect_utils_type_f03_MOD_cache_epv_s in ccxe8Zdc.o ld: symbol(s) not found collect2: error: ld returned 1 exit status