diff --git a/klippy/chelper/__init__.py b/klippy/chelper/__init__.py
index ed2ae4577..d373d72e0 100644
--- a/klippy/chelper/__init__.py
+++ b/klippy/chelper/__init__.py
@@ -199,12 +199,21 @@ def check_build_code(sources, target):
     obj_times = get_mtimes([target])
     return not obj_times or max(src_times) > min(obj_times)
 
+# Check if the current gcc version supports a particular command-line option
 def check_gcc_option(option):
     cmd = "%s %s -S -o /dev/null -xc /dev/null > /dev/null 2>&1" % (
         GCC_CMD, option)
     res = os.system(cmd)
     return res == 0
 
+# Check if the current gcc version supports a particular command-line option
+def do_build_code(cmd):
+    res = os.system(cmd)
+    if res:
+        msg = "Unable to build C code module (error=%s)" % (res,)
+        logging.error(msg)
+        raise Exception(msg)
+
 FFI_main = None
 FFI_lib = None
 pyhelper_logging_callback = None
@@ -223,7 +232,7 @@ def get_ffi():
             else:
                 cmd = "%s %s" % (GCC_CMD, COMPILE_ARGS)
             logging.info("Building C code module %s", DEST_LIB)
-            os.system(cmd % (destlib, ' '.join(srcfiles)))
+            do_build_code(cmd % (destlib, ' '.join(srcfiles)))
         FFI_main = cffi.FFI()
         for d in defs_all:
             FFI_main.cdef(d)
@@ -254,7 +263,7 @@ def run_hub_ctrl(enable_power):
     destlib = get_abs_files(hubdir, [HC_TARGET])[0]
     if check_build_code(srcfiles, destlib):
         logging.info("Building C code module %s", HC_TARGET)
-        os.system(HC_COMPILE_CMD % (destlib, ' '.join(srcfiles)))
+        do_build_code(HC_COMPILE_CMD % (destlib, ' '.join(srcfiles)))
     os.system(HC_CMD % (hubdir, enable_power))
 
 
diff --git a/scripts/spi_flash/fatfs_lib.py b/scripts/spi_flash/fatfs_lib.py
index 5894bb522..2f27c083a 100644
--- a/scripts/spi_flash/fatfs_lib.py
+++ b/scripts/spi_flash/fatfs_lib.py
@@ -73,7 +73,7 @@ def check_fatfs_build(printfunc=lambda o: o):
         else:
             cmd = "%s %s" % (chelper.GCC_CMD, chelper.COMPILE_ARGS)
         printfunc("Building FatFS shared library...")
-        os.system(cmd % (destlib, ' '.join(srcfiles)))
+        chelper.do_build_code(cmd % (destlib, ' '.join(srcfiles)))
         printfunc("Done\n")
     global fatfs_ffi_main, fatfs_ffi_lib
     ffi_main.cdef(FATFS_CDEFS)