diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4152ecc..7deaeb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -614,6 +614,12 @@
   SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /ignore:4049")
 ENDIF (MSVC)
 
+# GCC is not strict enough by default, so enable most of the warnings.
+IF ("${UNIX}")
+  SET(CMAKE_CXX_FLAGS
+      "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wno-sign-compare -Wno-unused")
+ENDIF ("${UNIX}")
+
 ADD_SUBDIRECTORY(internal/ceres)
 
 OPTION(BUILD_DOCUMENTATION
diff --git a/include/ceres/internal/manual_constructor.h b/include/ceres/internal/manual_constructor.h
index 174d35e..7ea723d 100644
--- a/include/ceres/internal/manual_constructor.h
+++ b/include/ceres/internal/manual_constructor.h
@@ -110,56 +110,61 @@
   inline Type& operator*() { return *get(); }
   inline const Type& operator*() const { return *get(); }
 
+  // This is needed to get around the strict aliasing warning GCC generates.
+  inline void* space() {
+    return reinterpret_cast<void*>(space_);
+  }
+
   // You can pass up to four constructor arguments as arguments of Init().
   inline void Init() {
-    new(space_) Type;
+    new(space()) Type;
   }
 
   template <typename T1>
   inline void Init(const T1& p1) {
-    new(space_) Type(p1);
+    new(space()) Type(p1);
   }
 
   template <typename T1, typename T2>
   inline void Init(const T1& p1, const T2& p2) {
-    new(space_) Type(p1, p2);
+    new(space()) Type(p1, p2);
   }
 
   template <typename T1, typename T2, typename T3>
   inline void Init(const T1& p1, const T2& p2, const T3& p3) {
-    new(space_) Type(p1, p2, p3);
+    new(space()) Type(p1, p2, p3);
   }
 
   template <typename T1, typename T2, typename T3, typename T4>
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4) {
-    new(space_) Type(p1, p2, p3, p4);
+    new(space()) Type(p1, p2, p3, p4);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5>
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5) {
-    new(space_) Type(p1, p2, p3, p4, p5);
+    new(space()) Type(p1, p2, p3, p4, p5);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
             typename T6>
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5, const T6& p6) {
-    new(space_) Type(p1, p2, p3, p4, p5, p6);
+    new(space()) Type(p1, p2, p3, p4, p5, p6);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
             typename T6, typename T7>
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5, const T6& p6, const T7& p7) {
-    new(space_) Type(p1, p2, p3, p4, p5, p6, p7);
+    new(space()) Type(p1, p2, p3, p4, p5, p6, p7);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
             typename T6, typename T7, typename T8>
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5, const T6& p6, const T7& p7, const T8& p8) {
-    new(space_) Type(p1, p2, p3, p4, p5, p6, p7, p8);
+    new(space()) Type(p1, p2, p3, p4, p5, p6, p7, p8);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
@@ -167,7 +172,7 @@
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5, const T6& p6, const T7& p7, const T8& p8,
                    const T9& p9) {
-    new(space_) Type(p1, p2, p3, p4, p5, p6, p7, p8, p9);
+    new(space()) Type(p1, p2, p3, p4, p5, p6, p7, p8, p9);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
@@ -175,7 +180,7 @@
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5, const T6& p6, const T7& p7, const T8& p8,
                    const T9& p9, const T10& p10) {
-    new(space_) Type(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+    new(space()) Type(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
   }
 
   template <typename T1, typename T2, typename T3, typename T4, typename T5,
@@ -184,7 +189,7 @@
   inline void Init(const T1& p1, const T2& p2, const T3& p3, const T4& p4,
                    const T5& p5, const T6& p6, const T7& p7, const T8& p8,
                    const T9& p9, const T10& p10, const T11& p11) {
-    new(space_) Type(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
+    new(space()) Type(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
   }
 
   inline void Destroy() {
diff --git a/internal/ceres/cxsparse.cc b/internal/ceres/cxsparse.cc
index ca36ce0..21c98e0 100644
--- a/internal/ceres/cxsparse.cc
+++ b/internal/ceres/cxsparse.cc
@@ -39,7 +39,7 @@
 namespace ceres {
 namespace internal {
 
-CXSparse::CXSparse() : scratch_size_(0), scratch_(NULL) {
+CXSparse::CXSparse() : scratch_(NULL), scratch_size_(0) {
 }
 
 CXSparse::~CXSparse() {
