Otázka: Kompiloval jsem Ruby verzi 1.9.3 na počítači CentOS a při provádění make se mi zobrazila níže uvedená chybová zpráva příkaz.
EC_GROUP_new_curve_GF2m undeclared (first use in this function)
Při kompilaci ossl_pkey_ec.c došlo k chybě soubor.
Zde je snímek úplné chyby:
# ./configure
#make ossl_pkey_ec.c: In function âossl_ec_group_initializeâ: ossl_pkey_ec.c:761:17: warning: implicit declaration of function âEC_GF2m_simple method [-Wimplicit-function-declaration] method = EC_GF2m_simple_method(); ^ ossl_pkey_ec.c:761:24: warning: assignment makes pointer from integer without a cast [enabled by default] method = EC_GF2m_simple_method(); ^ ossl_pkey_ec.c:816:29: error: âEC_GROUP_new_curve_GF2mâ undeclared (first use in this function) new_curve = EC_GROUP_new_curve_GF2m; ^ ossl_pkey_ec.c:816:29: note: each undeclared identifier is reported only once for each function it appears in make[2]: *** [ossl_pkey_ec.o] Error 1 make[2]: Leaving directory `/root/ruby-1.9.3-p374/ext/openssl' make[1]: *** [ext/openssl/all] Error 2 make[1]: Leaving directory `/root/ruby-1.9.3-p374' make: *** [build-ext] Error 2
Pomozte mi vyřešit chybu.
Řešení:
Jednoduché vyhledávání Google na chybové zprávě EC_GROUP_new_curve_GF2m undeclared (první použití v této funkci) naznačil, že jde o známou chybu v Ruby se sestavou OpenSSL. Naštěstí vývojáři problém vyřešili pomocí opravy.
Před vytvořením (vytvoření) Ruby postupujte podle následujících kroků a spusťte opravu:
Krok 1 :Předpokládám, že váš současný pracovní adresář je zdrojový adresář Ruby.
Krok 2 :Stáhněte si opravu, jak je znázorněno níže:
# wget https://bugs.ruby-lang.org/attachments/download/3707/out.patch
# ls out.patch out.patch
Krok 3 :Najděte soubor, který potřebujete opravit. Z výše uvedené chybové zprávy je zřejmé, že chyba je přítomna v souboru ‚ossl_pkey_ec.c‘.
# find . -name ossl_pkey_ec.c ./ext/openssl/ossl_pkey_ec.c
Krok 4 :Spusťte staženou opravu
# patch ./ext/openssl/ossl_pkey_ec.c < out.patch patching file ./ext/openssl/ossl_pkey_ec.c Hunk #1 succeeded at 757 (offset -5 lines). Hunk #2 succeeded at 814 (offset -5 lines). patching file ./ext/openssl/ossl_pkey_ec.c Hunk #1 FAILED at 7. 1 out of 1 hunk FAILED -- saving rejects to file ./ext/openssl/ossl_pkey_ec.c.rej
Nyní je záplata hotová. Zkuste znovu postavit Ruby.
[Ruby_source_directory] # make
Doufám, že to pomůže.