diff -Nurd communications/src/Makefile communications.patched/src/Makefile
--- communications/src/Makefile	2008-03-27 11:45:25.000000000 -0400
+++ communications.patched/src/Makefile	2012-01-19 21:12:57.000000000 -0500
@@ -26,7 +26,7 @@
 DELETES = $(OBJECTS) $(GALOISDEPENDS) $(OTHERDEPENDS) *~ $(TARGETS) core octave-core
 
 DEFINES = -DGALOIS_DISP_PRIVATES
-MOFLAGS =
+MOFLAGS = -lhdf5
 
 .PHONY: all dist clean realclean count
 .SUFFIXES:
diff -Nurd communications/src/galois.cc communications.patched/src/galois.cc
--- communications/src/galois.cc	2011-05-20 18:48:58.000000000 -0400
+++ communications.patched/src/galois.cc	2012-01-19 19:23:01.000000000 -0500
@@ -882,7 +882,7 @@
 template class base_lu <galois>;
 
 void
-LU::factor (const galois& a, const pivot_type& typ)
+galoisLU::factor (const galois& a, const pivot_type& typ)
 {
   int a_nr = a.rows ();
   int a_nc = a.cols ();
@@ -898,7 +898,7 @@
     int jp = j;
 
     // Find the pivot and test for singularity
-    if (ptype == LU::ROW) { 
+    if (ptype == galoisLU::ROW) { 
       for (int i = j+1; i < a_nr; i++)
 	if (a_fact(i,j) > a_fact(jp,j))
 	  jp = i;
@@ -911,7 +911,7 @@
     ipvt(j) = jp;
 
     if (a_fact(jp,j) != 0) {
-      if (ptype == LU::ROW) { 
+      if (ptype == galoisLU::ROW) { 
 	// Apply the interchange to columns 1:NC.
 	if (jp != j)
 	  for (int i = 0; i < a_nc; i++) {
@@ -962,7 +962,7 @@
 }
 
 galois
-LU::L (void) const
+galoisLU::L (void) const
 {
   int a_nr = a_fact.rows ();
   int a_nc = a_fact.cols ();
@@ -981,7 +981,7 @@
 }
 
 galois
-LU::U (void) const
+galoisLU::U (void) const
 {
   int a_nr = a_fact.rows ();
   int a_nc = a_fact.cols ();
@@ -1049,7 +1049,7 @@
     info = 0;
     retval(0,0) = 1;
   } else {
-    LU fact (*this);
+    galoisLU fact (*this);
 
     if ( ! fact.singular()) {
       galois A (fact.a_fact);
@@ -1110,7 +1110,7 @@
     return galois();
   } else if (nc > nr) {
     // Under-determined system, use column interchanges.
-    LU fact ((*this), LU::COL);
+    galoisLU fact ((*this), galoisLU::COL);
 
     if (fact.singular()) {
       info = -1;
@@ -1173,7 +1173,7 @@
     }
     
   } else {
-    LU fact (*this);
+    galoisLU fact (*this);
 
     if (fact.singular()) {
       info = -1;
diff -Nurd communications/src/galois.h communications.patched/src/galois.h
--- communications/src/galois.h	2011-05-20 18:48:58.000000000 -0400
+++ communications.patched/src/galois.h	2012-01-19 19:29:57.000000000 -0500
@@ -131,7 +131,7 @@
 };
 
 class
-LU : public base_lu <galois>
+galoisLU : public base_lu <galois>
 {
   friend class galois;
 public:
@@ -141,15 +141,15 @@
     COL
   };
 
-  LU (void) : base_lu <galois> () { }
+  galoisLU (void) : base_lu <galois> () { }
 
-  LU (const galois& a, const pivot_type& typ) { factor (a, typ); }
+  galoisLU (const galois& a, const pivot_type& typ) { factor (a, typ); }
 
-  LU (const galois& a) { factor (a, LU::ROW); }
+  galoisLU (const galois& a) { factor (a, galoisLU::ROW); }
 
-  LU (const LU& a) : base_lu <galois> (a) { }
+  galoisLU (const galoisLU& a) : base_lu <galois> (a) { }
 
-  LU& operator = (const LU& a)
+  galoisLU& operator = (const galoisLU& a)
     {
       if (this != &a)
 	base_lu <galois> :: operator = (a);
@@ -157,7 +157,7 @@
       return *this;
     }
 
-  ~LU (void) { }
+  ~galoisLU (void) { }
 
   galois L (void) const;
 
diff -Nurd communications/src/gf.cc communications.patched/src/gf.cc
--- communications/src/gf.cc	2011-05-22 15:32:41.000000000 -0400
+++ communications.patched/src/gf.cc	2012-01-19 21:23:52.000000000 -0500
@@ -855,7 +855,7 @@
   }
 
   if (! error_state) {
-    LU fact (m);
+    galoisLU fact (m);
 
     switch (nargout) {
     case 0: