diff --git a/Lib/distutils/command/build_clib.py b/Lib/distutils/command/build_clib.py
index c638fd5..6571281 100644
--- a/Lib/distutils/command/build_clib.py
+++ b/Lib/distutils/command/build_clib.py
@@ -28,7 +28,9 @@
 
 class BuildLib (Command):
 
-    options = []
+    options = [('debug', 'g',
+                "compile with debugging information"),
+              ]
 
     def set_default_options (self):
         # List of libraries to build
@@ -38,10 +40,13 @@
         self.include_dirs = None
         self.define = None
         self.undef = None
+        self.debug = None
 
     # set_default_options()
 
     def set_final_options (self):
+        self.set_undefined_options ('build',
+                                    ('debug', 'debug'))
         self.libraries = self.distribution.libraries
         if self.include_dirs is None:
             self.include_dirs = self.distribution.include_dirs or []
@@ -146,12 +151,13 @@
             objects = self.compiler.compile (sources,
                                              macros=macros,
                                              include_dirs=include_dirs,
-                                             output_dir=lib_dir)
+                                             output_dir=lib_dir,
+                                             debug=self.debug)
 
             # Now "link" the object files together into a static library.
             # (On Unix at least, this isn't really linking -- it just
             # builds an archive.  Whatever.)
-            self.compiler.link_static_lib (objects, lib_name)
+            self.compiler.link_static_lib (objects, lib_name, debug=self.debug)
 
         # for libraries
 
diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index 0f2d1a7..14c2234 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -58,6 +58,8 @@
                 "directories to search for shared C libraries at runtime"),
                ('link-objects=', 'O',
                 "extra explicit link objects to include in the link"),
+               ('debug', 'g',
+                "compile/link with debugging information"),
               ]
 
 
@@ -73,12 +75,15 @@
         self.library_dirs = None
         self.rpath = None
         self.link_objects = None
+        self.debug = None
 
 
     def set_final_options (self):
         from distutils import sysconfig
 
-        self.set_undefined_options ('build', ('build_platlib', 'build_dir'))
+        self.set_undefined_options ('build',
+                                    ('build_platlib', 'build_dir'),
+                                    ('debug', 'debug'))
 
         if self.package is None:
             self.package = self.distribution.ext_package
@@ -223,7 +228,8 @@
             include_dirs = build_info.get ('include_dirs')
             self.compiler.compile (sources,
                                    macros=macros,
-                                   include_dirs=include_dirs)
+                                   include_dirs=include_dirs,
+                                   debug=self.debug)
 
             # Now link the object files together into a "shared object" --
             # of course, first we have to figure out all the other things
@@ -236,7 +242,8 @@
             library_dirs = build_info.get ('library_dirs')
             extra_args = build_info.get ('extra_link_args') or []
             if self.compiler.compiler_type == 'msvc':
-                extra_args.append ('/export:init%s' % extension_name)
+                mod_name = string.split (extension_name, '.')[-1]
+                extra_args.append ('/export:init%s' % mod_name)
 
             ext_filename = self.extension_filename \
                            (extension_name, self.package)
@@ -246,7 +253,8 @@
             self.compiler.link_shared_object (objects, ext_filename, 
                                               libraries=libraries,
                                               library_dirs=library_dirs,
-                                              extra_postargs=extra_args)
+                                              extra_postargs=extra_args,
+                                              debug=self.debug)
 
     # build_extensions ()
 
diff --git a/Lib/distutils/command/build_lib.py b/Lib/distutils/command/build_lib.py
index c638fd5..6571281 100644
--- a/Lib/distutils/command/build_lib.py
+++ b/Lib/distutils/command/build_lib.py
@@ -28,7 +28,9 @@
 
 class BuildLib (Command):
 
-    options = []
+    options = [('debug', 'g',
+                "compile with debugging information"),
+              ]
 
     def set_default_options (self):
         # List of libraries to build
@@ -38,10 +40,13 @@
         self.include_dirs = None
         self.define = None
         self.undef = None
+        self.debug = None
 
     # set_default_options()
 
     def set_final_options (self):
+        self.set_undefined_options ('build',
+                                    ('debug', 'debug'))
         self.libraries = self.distribution.libraries
         if self.include_dirs is None:
             self.include_dirs = self.distribution.include_dirs or []
@@ -146,12 +151,13 @@
             objects = self.compiler.compile (sources,
                                              macros=macros,
                                              include_dirs=include_dirs,
-                                             output_dir=lib_dir)
+                                             output_dir=lib_dir,
+                                             debug=self.debug)
 
             # Now "link" the object files together into a static library.
             # (On Unix at least, this isn't really linking -- it just
             # builds an archive.  Whatever.)
-            self.compiler.link_static_lib (objects, lib_name)
+            self.compiler.link_static_lib (objects, lib_name, debug=self.debug)
 
         # for libraries
 
