diff --git a/debian/control b/debian/control
index 21615926245614273407d5f9384bf75bd025bb56..0a4f01872c68ec8fc949e5fdfe94fb332f23b653 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,6 @@ Source: tarantool
 Priority: optional
 Maintainer: Dmitry E. Oboukhov <unera@debian.org>
 Build-Depends: cdbs, debhelper (>= 8),
- gobjc,
  cmake,
  libreadline-dev,
  python-yaml,
diff --git a/include/lib/small/mempool.h b/include/lib/small/mempool.h
index f26ec1a7b0c413306752d9458dc4079e0e580add..5b43d19417d9c670c58aacd8e7b53ecccf43382d 100644
--- a/include/lib/small/mempool.h
+++ b/include/lib/small/mempool.h
@@ -109,7 +109,7 @@ struct mslab {
 	 * - it makes it possible to iterate over all
 	 *   objects in a slab.
 	 */
-	mbitmap_t map[];
+	mbitmap_t map[0];
 };
 
 static inline size_t
diff --git a/src/box/bitset_index.cc b/src/box/bitset_index.cc
index bb548e6252c4f9cccf583a0df2330811af36ef56..5e09e341d0c660d4b40425673200f0df7f719848 100644
--- a/src/box/bitset_index.cc
+++ b/src/box/bitset_index.cc
@@ -215,7 +215,7 @@ BitsetIndex::replace(struct tuple *old_tuple, struct tuple *new_tuple,
 	}
 
 	if (new_tuple != NULL) {
-		uint32_t len;
+		uint32_t len = 0;
 		const char *field;
 		field = tuple_field(new_tuple, key_def->parts[0].fieldno,
 				    &len);
diff --git a/src/box/box_lua.cc b/src/box/box_lua.cc
index 1cc76df1ec279220fa87627ca2b26c0c6302c6d0..4848f8fbbb28197df66a2d8b23455c9fbfd6071a 100644
--- a/src/box/box_lua.cc
+++ b/src/box/box_lua.cc
@@ -483,7 +483,7 @@ lbox_tuple_index(struct lua_State *L)
 		if (i >= tuple->field_count)
 			luaL_error(L, "%s: index %d is out of bounds (0..%d)",
 				   tuplelib_name, i, tuple->field_count-1);
-		uint32_t len;
+		uint32_t len = 0;
 		const char *field = tuple_field(tuple, i, &len);
 		lua_pushlstring(L, field, len);
 		return 1;
diff --git a/src/box/hash_index.cc b/src/box/hash_index.cc
index 8b800cbb8a20376827ba81b3492f804b43f04c3e..c5f3277cdf9e877602a712d3331e783a6d36bdbd 100644
--- a/src/box/hash_index.cc
+++ b/src/box/hash_index.cc
@@ -60,7 +60,7 @@ static inline uint32_t
 mh_index_hash(struct tuple *const *tuple, const struct key_def *key_def)
 {
 	struct key_part *part = key_def->parts;
-	uint32_t size;
+	uint32_t size = 0;
 	/*
 	 * Speed up the simplest case when we have a
 	 * single-part hash over an integer field.
@@ -265,6 +265,7 @@ struct tuple *
 HashIndex::findByKey(const char *key, uint32_t part_count) const
 {
 	assert(key_def->is_unique && part_count == key_def->part_count);
+	(void) part_count;
 
 	struct tuple *ret = NULL;
 	uint32_t k = mh_index_find(hash, key, key_def);
diff --git a/src/box/tuple.cc b/src/box/tuple.cc
index 14ba42296847a250ec7c293ba4def6a409a1dce5..8776a3040b1cbad398020c853a365d305c6b0a6a 100644
--- a/src/box/tuple.cc
+++ b/src/box/tuple.cc
@@ -349,7 +349,7 @@ tuple_print(struct tbuf *buf, const struct tuple *tuple)
 
 	struct tuple_iterator it;
 	const char *field;
-	uint32_t len;
+	uint32_t len = 0;
 	tuple_rewind(&it, tuple);
 	field = tuple_next(&it, &len);
 	print_field(buf, field, len);
@@ -457,7 +457,7 @@ tuple_compare(const struct tuple *tuple_a, const struct tuple *tuple_b,
 	struct tuple_format *format_b = tuple_format(tuple_b);
 	const char *field_a;
 	const char *field_b;
-	int r;
+	int r = 0;
 
 	for (; part < end; part++) {
 		field_a = tuple_field_old(format_a, tuple_a, part->fieldno);
diff --git a/src/plugin/pg/CMakeLists.txt b/src/plugin/pg/CMakeLists.txt
index 84714c7f3e26f537c453226a5c508793ebb7723e..8a6662b0d4e0c02036542a97966b23b18f506482 100644
--- a/src/plugin/pg/CMakeLists.txt
+++ b/src/plugin/pg/CMakeLists.txt
@@ -1,4 +1,6 @@
-include(FindPostgreSQL)
+# A special hack for buggy FindPostgreSQL.cmake in Debian/Ubuntu
+set(PostgreSQL_ROOT /usr/include/postgresql;/usr/include/postgres)
+find_package(PostgreSQL)
 if (PostgreSQL_FOUND)
 	message(STATUS "box.net.sql(pg): INC=${PostgreSQL_INCLUDE_DIRS}")
 	message(STATUS "box.net.sql(pg): LIBS=${PostgreSQL_LIBRARIES}")
diff --git a/third_party/libeio/eio.c b/third_party/libeio/eio.c
index dd9542c1557f4ce4741d491eae065f0915a344c1..b6362dc51dfb3cee9244fee8dde2316855ddd245 100644
--- a/third_party/libeio/eio.c
+++ b/third_party/libeio/eio.c
@@ -2279,7 +2279,7 @@ static void
 eio_execute (etp_worker *self, eio_req *req)
 {
 #if HAVE_AT
-  int dirfd;
+  int dirfd = -1;
 #else
   const char *path;
 #endif
diff --git a/third_party/libev/ev.c b/third_party/libev/ev.c
index 58858181fd078e32daf657615bd29623fc709a65..347f3c539f488167b433fba947bb3c6c1309caa7 100644
--- a/third_party/libev/ev.c
+++ b/third_party/libev/ev.c
@@ -1312,7 +1312,12 @@ typedef struct
 
 #else
 
-  EV_API_DECL ev_tstamp ev_rt_now = 0; /* needs to be initialised to make it a definition despite extern */
+#ifdef EV_API_STATIC
+  static ev_tstamp ev_rt_now = 0;
+#else
+  ev_tstamp ev_rt_now = 0;
+#endif
+
   #define VAR(name,decl) static decl;
     #include "ev_vars.h"
   #undef VAR