diff --git a/src/plugins/select/bgq/select_bgq.cc b/src/plugins/select/bgq/select_bgq.cc
index 32cdbb8be46d46c85967d24fc756535962ece109..a5cf091cf5202669876da9318591cf91b116035d 100644
--- a/src/plugins/select/bgq/select_bgq.cc
+++ b/src/plugins/select/bgq/select_bgq.cc
@@ -60,13 +60,13 @@ slurmdb_cluster_rec_t *working_cluster_rec = NULL;
 
 extern "C" {
 
-/* for some reason the extern "C" wrap above doesn't work for these
- * const vars, so we have to explicitly set it for each one.
+/* In C++ const objects have internal linkage by default so we have to
+ * do an extra extern here to make them export correctly.
  */
-extern "C" const char plugin_name[]       	= "BG/Q node selection plugin";
-extern "C" const char plugin_type[]       	= "select/bgq";
-extern "C" const uint32_t plugin_id     	= 103;
-extern "C" const uint32_t plugin_version	= 100;
+extern const char plugin_name[]       	= "BG/Q node selection plugin";
+extern const char plugin_type[]       	= "select/bgq";
+extern const uint32_t plugin_id     	= 103;
+extern const uint32_t plugin_version	= 100;
 
 /*
  * init() is called when the plugin is loaded, before any other functions