LibreSSL does not provide RAND_egd, drop wrappers for it. --- ext/openssl/extconf.rb 2014-07-21 16:12:51.350690031 +0200 +++ ext/openssl/extconf.rb 2014-07-21 16:13:29.806691406 +0200 @@ -150,6 +150,7 @@ have_struct_member("X509_ATTRIBUTE", "single", "openssl/x509.h") have_macro("OPENSSL_FIPS", ['openssl/opensslconf.h']) && $defs.push("-DHAVE_OPENSSL_FIPS") have_macro("EVP_CTRL_GCM_GET_TAG", ['openssl/evp.h']) && $defs.push("-DHAVE_AUTHENTICATED_ENCRYPTION") +have_func("RAND_egd") Logging::message "=== Checking done. ===\n" diff -ur /tmp/openssl/ossl_rand.c openssl/ossl_rand.c --- ext/openssl/ossl_rand.c 2014-07-21 16:12:51.350690031 +0200 +++ ext/openssl/ossl_rand.c 2014-07-21 16:16:58.322698863 +0200 @@ -125,6 +125,7 @@ return str; } +#if defined(HAVE_RAND_EGD_METHOD) /* * call-seq: * egd(filename) -> true @@ -158,6 +159,7 @@ } return Qtrue; } +#endif /* * call-seq: @@ -195,8 +197,10 @@ DEFMETH(mRandom, "write_random_file", ossl_rand_write_file, 1); DEFMETH(mRandom, "random_bytes", ossl_rand_bytes, 1); DEFMETH(mRandom, "pseudo_bytes", ossl_rand_pseudo_bytes, 1); +#if defined(HAVE_RAND_EGD_METHOD) DEFMETH(mRandom, "egd", ossl_rand_egd, 1); DEFMETH(mRandom, "egd_bytes", ossl_rand_egd_bytes, 2); +#endif DEFMETH(mRandom, "status?", ossl_rand_status, 0) }