diff --git a/BaseLib/FileTools.cpp b/BaseLib/FileTools.cpp
index 40fb244da92e2e08cf2833819e257e2c261e3ee9..953196758ffb2aeb19df8b685be50b01b158bd57 100644
--- a/BaseLib/FileTools.cpp
+++ b/BaseLib/FileTools.cpp
@@ -45,6 +45,7 @@ void truncateFile( std::string const& filename)
  * position of the last one or std::string::npos if no file path separator was
  * found.
  */
+static
 size_t findLastPathSeparator(std::string const& path)
 {
 	return path.find_last_of("/\\");
@@ -53,6 +54,7 @@ size_t findLastPathSeparator(std::string const& path)
 /** Finds the position of last dot.
  * This could be used to extract file extension.
  */
+static
 size_t findLastDot(std::string const& path)
 {
 	return path.find_last_of(".");
diff --git a/GeoLib/AnalyticalGeometry.cpp b/GeoLib/AnalyticalGeometry.cpp
index 7c86836c26843851a9a3be4f28e81a8d2985e753..15ab660a154d789fc1be370f2a65b6095cc0b5da 100644
--- a/GeoLib/AnalyticalGeometry.cpp
+++ b/GeoLib/AnalyticalGeometry.cpp
@@ -135,6 +135,7 @@ bool lineSegmentsIntersect(const GeoLib::Polyline* ply,
 	return false;
 }
 
+static
 bool isPointInTriangle(const double p[3], const double a[3], const double b[3], const double c[3])
 {
 	// criterion: p-b = u0 * (b - a) + u1 * (b - c); 0 <= u0, u1 <= 1, u0+u1 <= 1
@@ -159,6 +160,7 @@ bool isPointInTriangle(const GeoLib::Point* p, const GeoLib::Point* a, const Geo
 	return isPointInTriangle(p->getCoords(), a->getCoords(), b->getCoords(), c->getCoords());
 }
 
+static
 double getOrientedTriArea(GeoLib::Point const& a, GeoLib::Point const& b, GeoLib::Point const& c)
 {
 	const double u[3] = { c[0] - a[0], c[1] - a[1], c[2] - a[2] };
diff --git a/MathLib/LinAlg/Preconditioner/generateDiagPrecond.cpp b/MathLib/LinAlg/Preconditioner/generateDiagPrecond.cpp
index c0f3b735b1d2e092dc646e9f6e1656727129d486..ebe7d9072a12ab9dc59ea9743ab461095899f30d 100644
--- a/MathLib/LinAlg/Preconditioner/generateDiagPrecond.cpp
+++ b/MathLib/LinAlg/Preconditioner/generateDiagPrecond.cpp
@@ -18,6 +18,7 @@
 
 namespace MathLib {
 
+static
 bool generateDiagPrecond (unsigned n, unsigned const*const iA, unsigned const*const jA,
 				double const*const A, double* diag)
 {
@@ -44,6 +45,7 @@ bool generateDiagPrecond (unsigned n, unsigned const*const iA, unsigned const*co
 	return true;
 }
 
+static
 bool generateDiagPrecondRowSum(unsigned n, unsigned const*const iA, double const*const A, double* diag)
 {
 	unsigned idx; // first idx of next row
@@ -64,6 +66,7 @@ bool generateDiagPrecondRowSum(unsigned n, unsigned const*const iA, double const
 	return true;
 }
 
+static
 bool generateDiagPrecondRowMax(unsigned n, unsigned const*const iA, double const*const A, double* diag)
 {
 	unsigned idx; // first idx of next row
diff --git a/MathLib/LinAlg/Solvers/CG.cpp b/MathLib/LinAlg/Solvers/CG.cpp
index cdc499109dbbddc19ab1888596c17463157482a2..13b7d15ad975962453367d00e34f71428cae9a0d 100644
--- a/MathLib/LinAlg/Solvers/CG.cpp
+++ b/MathLib/LinAlg/Solvers/CG.cpp
@@ -34,6 +34,7 @@
 
 namespace MathLib {
 
+extern
 unsigned CG(CRSMatrix<double,unsigned> const * mat, double const * const b,
 		double* const x, double& eps, unsigned& nsteps)
 {
diff --git a/MathLib/LinAlg/Sparse/NestedDissectionPermutation/AdjMat.cpp b/MathLib/LinAlg/Sparse/NestedDissectionPermutation/AdjMat.cpp
index 417849af6cd282d5b90736bb8becec5313c85f66..74c1d78db7dc5bd78726df17b87c56e94e8e5724 100644
--- a/MathLib/LinAlg/Sparse/NestedDissectionPermutation/AdjMat.cpp
+++ b/MathLib/LinAlg/Sparse/NestedDissectionPermutation/AdjMat.cpp
@@ -71,6 +71,7 @@ AdjMat* AdjMat::getMat(unsigned beg, unsigned end,
  * @param iA array of size of the number of rows/columns + 1, array contains pointer into jA array
  * @param jA array of the length of the number of non-zero entries (edges in the matrix graph)
  */
+static
 void genAdjMat(unsigned n, unsigned* &iA, unsigned* &jA)
 {
 	unsigned i;
@@ -152,6 +153,7 @@ void genAdjMat(unsigned n, unsigned* &iA, unsigned* &jA)
 	delete[] iAn;
 }
 
+static
 void genFullAdjMat(unsigned n, unsigned* &iA, unsigned* &jA)
 {
 	unsigned i;