diff -ru gfan0.5/Makefile gfan0.5-patched/Makefile
--- gfan0.5/Makefile
+++ gfan0.5-patched/Makefile
@@ -29,7 +29,7 @@
 GMP_LINKOPTIONS = -lgmp
 GMP_INCLUDEOPTIONS =
 else
-GMP_LINKOPTIONS = $(gmppath)/lib/libgmp.a
+GMP_LINKOPTIONS = -L$(gmppath)/lib -lgmp
 GMP_INCLUDEOPTIONS = -I $(gmppath)/include
 endif
 
@@ -37,7 +37,7 @@
 CDD_LINKOPTIONS = -L/usr/local -lcddgmp
 CDD_INCLUDEOPTIONS =
 else
-CDD_LINKOPTIONS = $(cddpath)/lib/libcddgmp.a
+CDD_LINKOPTIONS = -L$(cddpath)/lib -lcddgmp
 CDD_INCLUDEOPTIONS = -I $(cddpath)/include
 endif
 
diff -ru gfan0.5/app_intsinpolytope.cpp gfan0.5-patched/app_intsinpolytope.cpp
--- gfan0.5/app_intsinpolytope.cpp
+++ gfan0.5-patched/app_intsinpolytope.cpp
@@ -104,7 +104,7 @@
 	  }
       }
 
-    fprintf(stderr,"Sets to test: %i\n",setsToCheck.size());
+    fprintf(stderr,"Sets to test: %zu\n",setsToCheck.size());
 
     set<set<int> > ret;
     for(set<set<int> >::const_iterator i=setsToCheck.begin();i!=setsToCheck.end();i++)
@@ -118,7 +118,7 @@
 	if(isPartOfAZBasis(l))ret.insert(*i);
       }
 
-    fprintf(stderr,"Produced sets: %i\n",ret.size());
+    fprintf(stderr,"Produced sets: %zu\n",ret.size());
 
     return ret;
   }
diff -ru gfan0.5/app_isgroebnerbasis.cpp gfan0.5-patched/app_isgroebnerbasis.cpp
--- gfan0.5/app_isgroebnerbasis.cpp
+++ gfan0.5-patched/app_isgroebnerbasis.cpp
@@ -47,7 +47,7 @@
     IntegerVectorListList sums;
     IntegerVectorList polytope=minkowski(polytopes,&sums);
 
-    fprintf(Stderr,"Number of extreme vertices in Minkowski sum: %i\n",polytope.size());
+    fprintf(Stderr,"Number of extreme vertices in Minkowski sum: %zu\n",polytope.size());
 
     bool isGroebnerBasis=false;
     int counter=0;
diff -ru gfan0.5/app_minkowski.cpp gfan0.5-patched/app_minkowski.cpp
--- gfan0.5/app_minkowski.cpp
+++ gfan0.5-patched/app_minkowski.cpp
@@ -160,7 +160,6 @@
 	    //log0 fprintf(Stderr,"4");
 	    f.insert(c);
 	    //log0 fprintf(Stderr,"5\n");
-	    static int i;
 	    //log0 fprintf(Stderr,"inserted:%i\n",++i);
 	  }
 	log1 fprintf(Stderr,"Resolving symmetries.\n");
diff -ru gfan0.5/app_normalfancleanup.cpp gfan0.5-patched/app_normalfancleanup.cpp
--- gfan0.5/app_normalfancleanup.cpp
+++ gfan0.5-patched/app_normalfancleanup.cpp
@@ -71,7 +71,7 @@
 		  FILE *f=fopen("iteraTIon","w");
 		  if(f)
 		    {
-		      fprintf(f,"%i:%i\n",a,l2.size());
+		      fprintf(f,"%i:%zu\n",a,l2.size());
 		      fclose(f);
 		    }
 		}
diff -ru gfan0.5/app_secondaryfan.cpp gfan0.5-patched/app_secondaryfan.cpp
--- gfan0.5/app_secondaryfan.cpp
+++ gfan0.5-patched/app_secondaryfan.cpp
@@ -142,7 +142,7 @@
 
     while(1)
       {
-	fprintf(stdout,"Triangles in current triangulation:%i\n",a.bases.size());
+	fprintf(stdout,"Triangles in current triangulation:%zu\n",a.bases.size());
 	PolyhedralCone C=a.secondaryCone();
 
 	C.canonicalize();
@@ -198,7 +198,7 @@
 
     while(1)
       {
-	fprintf(stdout,"Triangles in current triangulation:%i\n",a.bases.size());
+	fprintf(stdout,"Triangles in current triangulation:%zu\n",a.bases.size());
 	//	PolyhedralCone C=a.secondaryCone();
 
 	//	C.canonicalize();
@@ -214,7 +214,7 @@
 	      {
 		Triangulation2 b=a;
 		b.flipNew(-*i);
-		fprintf(stdout,"Triangles in new triangulation:%i\n",b.bases.size());
+		fprintf(stdout,"Triangles in new triangulation:%zu\n",b.bases.size());
 
 		if(b.bases.size()==abortAtSize)
 		  {
diff -ru gfan0.5/app_test.cpp gfan0.5-patched/app_test.cpp
--- gfan0.5/app_test.cpp
+++ gfan0.5-patched/app_test.cpp
@@ -128,7 +128,7 @@
 
 	M[I]=minusOne*M[I];
       }
-    fprintf(Stdout,"Extreme permutations (%i):\n",extreme.size());
+    fprintf(Stdout,"Extreme permutations (%zu):\n",extreme.size());
     P.printVectorList(extreme);
   }
 
diff -ru gfan0.5/app_tropicaltraverse.cpp gfan0.5-patched/app_tropicaltraverse.cpp
--- gfan0.5/app_tropicaltraverse.cpp
+++ gfan0.5-patched/app_tropicaltraverse.cpp
@@ -156,7 +156,7 @@
 	BergmanFan f=bergman(coneGroebnerBasis,idealGroebnerBasis,&s);
 	f.computeMultiplicities();
 	/*	log1 fprintf(Stderr,"Is simplicial: %s\n",f.isSimplicial()?"true":"false");*/
-	log1 fprintf(Stderr,"Order of input symmetry group: %i\n",s.elements.size());
+	log1 fprintf(Stderr,"Order of input symmetry group: %zu\n",s.elements.size());
 	log1 fprintf(Stderr,"Number of maximal cones: %i\n",f.numberOfMaximalCones());
 	log1 fprintf(Stderr,"Modulo the homogeneity space:\n");
 	log1 AsciiPrinter(Stderr).printVectorList(hv);
diff -ru gfan0.5/application.cpp gfan0.5-patched/application.cpp
--- gfan0.5/application.cpp
+++ gfan0.5-patched/application.cpp
@@ -547,7 +547,7 @@
 	if(strlen(p->name())>0)
 	  {
 	    char c[1024];
-	    sprintf(c,"ln -s %s%s %s%s%s\n",path,name,path,name,p->name());
+	    sprintf(c,"ln -s %s %s%s%s\n",name,path,name,p->name());
 	    fprintf(stderr,"%s",c);
 	    system(c);
 	  }
diff -ru gfan0.5/bergman.cpp gfan0.5-patched/bergman.cpp
--- gfan0.5/bergman.cpp
+++ gfan0.5-patched/bergman.cpp
@@ -149,7 +149,7 @@
       if(0)
 	{
 	  s=fullColoredIdeals(*g,false);
-	  fprintf(Stderr,"Full colored ideals computed, #=%i\n",s.size());
+	  fprintf(Stderr,"Full colored ideals computed, #=%zu\n",s.size());
 	}
       else
 	{
@@ -539,7 +539,7 @@
   while(!active.empty())
     {
       log1 fprintf(Stderr,"\n-------------------------------------\n");
-      log1 fprintf(Stderr,"Size of active set: %i, Completed: %i\n",active.size(),ret.cones.size());
+      log1 fprintf(Stderr,"Size of active set: %i, Completed: %zu\n",active.size(),ret.cones.size());
       log1 fprintf(Stderr,"-------------------------------------\n");
       AsciiPrinter p(Stderr);
       
diff -ru gfan0.5/buchberger.cpp gfan0.5-patched/buchberger.cpp
--- gfan0.5/buchberger.cpp
+++ gfan0.5-patched/buchberger.cpp
@@ -540,7 +540,7 @@
 	{
 	  static int t;
 	  t++;
-	  if((t&31)==0)fprintf(Stderr,"         spolys:%i\n",sPolynomials.size());
+	  if((t&31)==0)fprintf(Stderr,"         spolys:%zu\n",sPolynomials.size());
 	}
 
       {
@@ -565,7 +565,7 @@
 	    {
 	      static int t;
 	      if(((++t)&=31)==0)
-		fprintf(Stderr,"gsize:%i spolys:%i\n",g->size()+1,sPolynomials.size());
+		fprintf(Stderr,"gsize:%zu spolys:%zu\n",g->size()+1,sPolynomials.size());
 	    }
 	  PolynomialSet::iterator j=g->end();j--;
 	  updatePairs(sPolynomials,g,&redundantOnes,j,indexj,truncationDegree,&grading);
diff -ru gfan0.5/genericwalk.cpp gfan0.5-patched/genericwalk.cpp
--- gfan0.5/genericwalk.cpp
+++ gfan0.5-patched/genericwalk.cpp
@@ -202,7 +202,7 @@
     g=newG;
 
     nflips++;
-    fprintf(Stderr,"Flip %i, new size %i\n",nflips,g.size());
+    fprintf(Stderr,"Flip %i, new size %zu\n",nflips,g.size());
   }
   fprintf(Stderr,"Number of flips:%i\n",nflips);
 
diff -ru gfan0.5/gmpallocator.cpp gfan0.5-patched/gmpallocator.cpp
--- gfan0.5/gmpallocator.cpp
+++ gfan0.5-patched/gmpallocator.cpp
@@ -145,19 +145,19 @@
 //Debug
 void *myAllocateFunctionD(size_t alloc_size)
 {
-  fprintf(stderr,"Allocating: %i bytes.\n",alloc_size);
+  fprintf(stderr,"Allocating: %zu bytes.\n",alloc_size);
   return malloc(alloc_size);
 }
 
 void *myReallocateFunctionD(void *ptr, size_t old_size, size_t new_size)
 {
-  fprintf(stderr,"Reallocating: %i --> %i bytes.\n",old_size,new_size);
+  fprintf(stderr,"Reallocating: %zu --> %zu bytes.\n",old_size,new_size);
   return realloc(ptr,new_size);
 }
 
 void myDeallocateFunctionD(void *ptr, size_t size)
 {
-  fprintf(stderr,"Freeing: %i bytes.\n",size);
+  fprintf(stderr,"Freeing: %zu bytes.\n",size);
   return free(ptr);
 }
 
diff -ru gfan0.5/halfopencone.cpp gfan0.5-patched/halfopencone.cpp
--- gfan0.5/halfopencone.cpp
+++ gfan0.5-patched/halfopencone.cpp
@@ -555,14 +555,14 @@
     {
       HalfOpenConeList surface=tropicalHyperSurface(*i);
 
-      fprintf(Stderr,"Number of cones in current intersection:%i\n",intersection.size());
-      fprintf(Stderr,"Number of cones in next surface:%i\n",surface.size());
+      fprintf(Stderr,"Number of cones in current intersection:%zu\n",intersection.size());
+      fprintf(Stderr,"Number of cones in next surface:%zu\n",surface.size());
 
       fprintf(Stderr,"A\n");
       intersection=refinement(intersection,surface);
       fprintf(Stderr,"B\n");
     }
-  fprintf(Stderr,"%i",intersection.size());
+  fprintf(Stderr,"%zu",intersection.size());
 
   return intersection;
 }
diff -ru gfan0.5/linalgfloat.h gfan0.5-patched/linalgfloat.h
--- gfan0.5/linalgfloat.h
+++ gfan0.5-patched/linalgfloat.h
@@ -13,6 +13,7 @@
 
 namespace linalgfloat
 {
+class Matrix;
 class Vector{
     int n;
     std::vector<typ> data;
diff -ru gfan0.5/lp_cdd.cpp gfan0.5-patched/lp_cdd.cpp
--- gfan0.5/lp_cdd.cpp
+++ gfan0.5-patched/lp_cdd.cpp
@@ -1287,8 +1287,8 @@
   if(A->rowsize!=newLin.size()+newIn.size())
     {
       fprintf(stderr,"A->rowsize: %i\n",(int)A->rowsize);
-      fprintf(stderr,"newLin.size(): %i\n",newLin.size());
-      fprintf(stderr,"newIn.size(): %i\n",newIn.size());
+      fprintf(stderr,"newLin.size(): %zu\n",newLin.size());
+      fprintf(stderr,"newIn.size(): %zu\n",newIn.size());
 
       dd_WriteMatrix(Stderr,A);
 
diff -ru gfan0.5/minkowskisum.cpp gfan0.5-patched/minkowskisum.cpp
--- gfan0.5/minkowskisum.cpp
+++ gfan0.5-patched/minkowskisum.cpp
@@ -27,7 +27,7 @@
 
     assert(f);
     {
-      fprintf(f,"%i",polytopes.size());
+      fprintf(f,"%zu",polytopes.size());
       TopcomPrinter p(f);
       //AsciiPrinter p(f);
 
diff -ru gfan0.5/polyhedralfan.cpp gfan0.5-patched/polyhedralfan.cpp
--- gfan0.5/polyhedralfan.cpp
+++ gfan0.5-patched/polyhedralfan.cpp
@@ -604,7 +604,7 @@
 {
   //  log0 fprintf(Stderr,"rayComplexSymmetry - begin\n");
   PolyhedralFan ret(n);
-  log1 fprintf(Stderr,"Computing rays of %i cones\n",cones.size());
+  log1 fprintf(Stderr,"Computing rays of %zu cones\n",cones.size());
   for(PolyhedralConeList::const_iterator i=cones.begin();i!=cones.end();i++)
     {
       {
@@ -812,7 +812,7 @@
         SymmetryGroup localsym(n);
         if(!sym)sym=&localsym;
   set<IntegerVector> rays;
-  log1 fprintf(Stderr,"Computing rays of %i cones\n",cones.size());
+  log1 fprintf(Stderr,"Computing rays of %zu cones\n",cones.size());
   for(PolyhedralConeList::const_iterator i=cones.begin();i!=cones.end();i++)
     {
       {
@@ -1212,7 +1212,7 @@
 	    static int t;
 	    if((t&1023)==0)
 	      {
-		fprintf(Stderr,"clist size:%i\n",clist.size());
+		fprintf(Stderr,"clist size:%zu\n",clist.size());
 	      }
 	    t++;
 	  }
diff -ru gfan0.5/symmetry.cpp gfan0.5-patched/symmetry.cpp
--- gfan0.5/symmetry.cpp
+++ gfan0.5-patched/symmetry.cpp
@@ -300,7 +300,7 @@
       l.push_back(*i);
     }
   P.printVectorList(l);
-  fprintf(f,"Group order=%i\n",elements.size());
+  fprintf(f,"Group order=%zu\n",elements.size());
   P.printString("Done printing SymmetryGroup.\n");
 }
 
diff -ru gfan0.5/testsuite/0056WeildDivisor/command gfan0.5-patched/testsuite/0056WeildDivisor/command
--- gfan0.5/testsuite/0056WeildDivisor/command
+++ gfan0.5-patched/testsuite/0056WeildDivisor/command
@@ -1 +1 @@
-%s _tropicalhypersurface >temp1.poly ; %s _tropicalweildivisor -i1 temp1.poly -i2 func.poly > temp2.poly ; %s _tropicalweildivisor -i1 temp2.poly -i2 func.poly | grep MULTIPLICITIES -A1
+%s _tropicalhypersurface >temp1.poly ; %s _tropicalweildivisor -i1 temp1.poly -i2 testsuite/0056WeildDivisor/func.poly > temp2.poly ; %s _tropicalweildivisor -i1 temp2.poly -i2 testsuite/0056WeildDivisor/func.poly | grep MULTIPLICITIES -A1
diff -ru gfan0.5/testsuite/0507InitialIdeal/command gfan0.5-patched/testsuite/0507InitialIdeal/command
--- gfan0.5/testsuite/0507InitialIdeal/command
+++ gfan0.5-patched/testsuite/0507InitialIdeal/command
@@ -1 +1 @@
-gfan _overintegers --initialIdeal -m
+%s _overintegers --initialIdeal -m
diff -ru gfan0.5/testsuite/0508IntegerGroebnerCone/command gfan0.5-patched/testsuite/0508IntegerGroebnerCone/command
--- gfan0.5/testsuite/0508IntegerGroebnerCone/command
+++ gfan0.5-patched/testsuite/0508IntegerGroebnerCone/command
@@ -1 +1 @@
-gfan _overintegers --groebnerCone | grep N_RAYS -v | grep RAYS -A3 | sort
+%s _overintegers --groebnerCone | grep N_RAYS -v | grep RAYS -A3 | sort
diff -ru gfan0.5/testsuite/0509IntegerGroebnerFan/command gfan0.5-patched/testsuite/0509IntegerGroebnerFan/command
--- gfan0.5/testsuite/0509IntegerGroebnerFan/command
+++ gfan0.5-patched/testsuite/0509IntegerGroebnerFan/command
@@ -1 +1 @@
-gfan _overintegers --groebnerFan |grep F_VECTOR
+%s _overintegers --groebnerFan |grep F_VECTOR
diff -ru gfan0.5/xfig.cpp gfan0.5-patched/xfig.cpp
--- gfan0.5/xfig.cpp
+++ gfan0.5-patched/xfig.cpp
@@ -103,7 +103,7 @@
 {
   if(vertices.size())
     {
-      fprintf(f,"2 3 0 1 0 %i 50 0 25 0.000 0 0 -1 0 0 %i\n        ",7,vertices.size()+1);
+      fprintf(f,"2 3 0 1 0 %i 50 0 25 0.000 0 0 -1 0 0 %zu\n        ",7,vertices.size()+1);
       
       for(Polygon::const_iterator i=vertices.begin();i!=vertices.end();i++)
         kickPoint(*i,mode);
diff -ru gfan0.5/xfig.h gfan0.5-patched/xfig.h
--- gfan0.5/xfig.h
+++ gfan0.5-patched/xfig.h
@@ -52,7 +52,7 @@
   void endDrawLine()
     {
       assert(p.size()>0);
-      fprintf(f," %i\n",p.size());
+      fprintf(f," %zu\n",p.size());
       if(arrowOrigin)
 	fprintf(f,"\t 2 1 1.00 60.00 120.00\n");
       if(arrowTarget)
