diff --git a/core/c/jbigi/jbigi/src/jbigi.c b/core/c/jbigi/jbigi/src/jbigi.c
index a9c5db5447d1c6e1249d88bd573bc2772778dfdc..dda0a5f6ab9a5cebcf9f2690dbb678f498f86ffe 100644
--- a/core/c/jbigi/jbigi/src/jbigi.c
+++ b/core/c/jbigi/jbigi/src/jbigi.c
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <string.h>
 #include <gmp.h>
 #include "jbigi.h"
 
@@ -15,7 +16,7 @@ void convert_mp2j(JNIEnv* env, mpz_t mvalue, jbyteArray* jvalue);
  * 2: (I2P 0.8.7)
  *    Removed nativeDoubleValue()
  *
- * 3: (I2P 0.9.18)
+ * 3: (I2P 0.9.26)
  *    Added:
  *      nativeJbigiVersion()
  *      nativeGMPMajorVersion()
@@ -26,8 +27,12 @@ void convert_mp2j(JNIEnv* env, mpz_t mvalue, jbyteArray* jvalue);
  *    Support negative base value in modPow()
  *    Throw ArithmeticException for bad arguments in modPow()
  *
+ * 4: (I2P 0.9.27)
+ *    Fix nativeGMPMajorVersion(), nativeGMPMinorVersion(), and nativeGMPPatchVersion()
+ *    when built as a shared library
+ *
  */
-#define JBIGI_VERSION 3
+#define JBIGI_VERSION 4
 
 /*****************************************
  *****Native method implementations*******
@@ -39,22 +44,31 @@ JNIEXPORT jint JNICALL Java_net_i2p_util_NativeBigInteger_nativeJbigiVersion
     return (jint) JBIGI_VERSION;
 }
 
-/* since version 3 */
+/* since version 3, fixed for dynamic builds in version 4 */
 JNIEXPORT jint JNICALL Java_net_i2p_util_NativeBigInteger_nativeGMPMajorVersion
         (JNIEnv* env, jclass cls) {
-    return (jint) __GNU_MP_VERSION;
+    int v = gmp_version[0] - '0';
+    return (jint) v;
 }
 
-/* since version 3 */
+/* since version 3, fixed for dynamic builds in version 4 */
 JNIEXPORT jint JNICALL Java_net_i2p_util_NativeBigInteger_nativeGMPMinorVersion
         (JNIEnv* env, jclass cls) {
-    return (jint) __GNU_MP_VERSION_MINOR;
+    int v = 0;
+    if (strlen(gmp_version) > 2) {
+        v = gmp_version[2] - '0';
+    }
+    return (jint) v;
 }
 
-/* since version 3 */
+/* since version 3, fixed for dynamic builds in version 4 */
 JNIEXPORT jint JNICALL Java_net_i2p_util_NativeBigInteger_nativeGMPPatchVersion
         (JNIEnv* env, jclass cls) {
-    return (jint) __GNU_MP_VERSION_PATCHLEVEL;
+    int v = 0;
+    if (strlen(gmp_version) > 4) {
+        v = gmp_version[4] - '0';
+    }
+    return (jint) v;
 }
 
 /******** nativeModPow() */