$(VERSION_FILE):
                @( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
                 '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ) > $@.tmp
+               @( printf '#define CC_VERSION_STRING "%s"\n' \
+                '$(shell $(CC) --version | head -n 1)' )>>  $@.tmp
+               @( printf '#define LD_VERSION_STRING "%s"\n' \
+                '$(shell $(LD) -v | head -n 1)' )>>  $@.tmp
                @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
 
 $(TIMESTAMP_FILE):
 
 
 #include <common.h>
 #include <command.h>
+#include <version.h>
 
 extern char version_string[];
 
 int do_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        printf("\n%s\n", version_string);
+#ifdef CC_VERSION_STRING
+       puts(CC_VERSION_STRING "\n");
+#endif
+#ifdef LD_VERSION_STRING
+       puts(LD_VERSION_STRING "\n");
+#endif
 
        return 0;
 }
 
 U_BOOT_CMD(
        version,        1,              1,      do_version,
-       "print monitor version",
+       "print monitor, compiler and linker version",
        ""
 );