Best Studio 1
Best Studio
D 1
delimuratt
Aliyldrim 1
Aliyldrim
Mt2Hizmet 1
Mt2Hizmet
noisiv 1
noisiv
Manwe Work 1
Manwe Work
melankolıa18 1
melankolıa18
Agora Metin2 1
Agora Metin2
Cannn6161 1
Cannn6161
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplandı FILES DERLENIRKEN HATA

  • Konuyu başlatan Konuyu başlatan 34istanblue
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 12
  • Görüntüleme Görüntüleme 192

34istanblue

Level 6
TM Üye
Katılım
19 Ağu 2010
Konular
272
Mesajlar
1,059
Çözüm
9
Online süresi
12d 4h
Reaksiyon Skoru
40
Altın Konu
0
TM Yaşı
15 Yıl 9 Ay 22 Gün
Başarım Puanı
189
MmoLira
3,016
DevLira
0
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Merhabalar,

Lorenzo'nun filesını derlemek istediğimde ekte görülen hatayı almaktayım. Konu ile ilgili olarak yardımcı olabilecek var mı ?


[ LORENZO WORKS ] [GAME DERLENIYOR]: shopEx.cpp
[ LORENZO WORKS ] [GAME DERLENIYOR]: item_manager_read_tables.cpp
[ LORENZO WORKS ] [GAME DERLENIYOR]: shutdown_manager.cpp
[ LORENZO WORKS ] [GAME DERLENIYOR]: questlua_dnd.cpp
[ LORENZO WORKS ] [GAME DERLENIYOR]: NewBattlePass.cpp
[ LORENZO WORKS ] [GAME DERLENIYOR]: minilzo.c
[ LORENZO WORKS ] [GAME DERLENIYOR]: main.cpp
Game Derlendi /home/main/srv1/share/bin/game_r41094...
/usr/local/bin/ld: /usr/local/lib/mysql/libmysqlclient.a(client.c.o): in function `send_client_reply_packet':
client.c:(.text+0x601c): undefined reference to `SSL_get_peer_certificate'
/usr/local/bin/ld: /usr/local/lib/mysql/libmysqlclient.a(my_aes_openssl.cc.o): in function `my_aes_encrypt':
my_aes_openssl.cc:(.text+0x60): undefined reference to `EVP_CIPHER_iv_length'
/usr/local/bin/ld: /usr/local/lib/mysql/libmysqlclient.a(my_aes_openssl.cc.o): in function `my_aes_decrypt':
my_aes_openssl.cc:(.text+0x224): undefined reference to `EVP_CIPHER_iv_length'
/usr/local/bin/ld: /usr/local/lib/mysql/libmysqlclient.a(my_aes_openssl.cc.o): in function `my_aes_get_size':
my_aes_openssl.cc:(.text+0x2fe): undefined reference to `EVP_CIPHER_block_size'
/usr/local/bin/ld: /usr/local/lib/mysql/libmysqlclient.a(my_aes_openssl.cc.o): in function `my_aes_needs_iv':
my_aes_openssl.cc:(.text+0x33a): undefined reference to `EVP_CIPHER_iv_length'
collect2: error: ld returned 1 exit status
gmake[1]: *** [Makefile:204: /home/main/srv1/share/bin/game_r41094] Error 1
gmake[1]: Leaving directory '/home/src/Server/game/src'
gmake: *** [Makefile:111: all] Error 2
root@Kralbenimmmm:/home/src/Server #
root@Kralbenimmmm:/home/src/Server #
 
Son düzenleme:
Çözüm
Ticaret - 0%
0   0   0
Hayrına yardımcı olabilecek biri varsa çok sevinirim
Merhabalar,

Aldığın hata derlemeden ziyade link aşamasında çıkıyor ve doğrudan Metin2 server source’larında MySQL–OpenSSL uyumsuzluğunu işaret ediyor. Kodlar derlenmiş gibi görünüyor ama en sonda game binary’si oluşturulurken MySQL client kütüphanesi, ihtiyaç duyduğu OpenSSL fonksiyonlarını bulamıyor.

Log’da geçen şu satırlar bunun göstergesi:

undefined reference to `SSL_get_peer_certificate'
undefined reference to `EVP_CIPHER_iv_length'
undefined reference to `EVP_CIPHER_block_size'

Bu hatalar genelde MySQL’in kullandığı libmysqlclient.a dosyasının OpenSSL’e bağlı olmasına rağmen, derleme sırasında OpenSSL kütüphanelerinin linklenmemesinden kaynaklanır. Yani...
Hayrına yardımcı olabilecek biri varsa çok sevinirim
Merhabalar,

Aldığın hata derlemeden ziyade link aşamasında çıkıyor ve doğrudan Metin2 server source’larında MySQL–OpenSSL uyumsuzluğunu işaret ediyor. Kodlar derlenmiş gibi görünüyor ama en sonda game binary’si oluşturulurken MySQL client kütüphanesi, ihtiyaç duyduğu OpenSSL fonksiyonlarını bulamıyor.

Log’da geçen şu satırlar bunun göstergesi:

undefined reference to `SSL_get_peer_certificate'
undefined reference to `EVP_CIPHER_iv_length'
undefined reference to `EVP_CIPHER_block_size'

Bu hatalar genelde MySQL’in kullandığı libmysqlclient.a dosyasının OpenSSL’e bağlı olmasına rağmen, derleme sırasında OpenSSL kütüphanelerinin linklenmemesinden kaynaklanır. Yani sorun Lorenzo files’ta ya da eklediğin sistemlerde değil, tamamen kütüphane tarafında.

Kontrol etmen gereken noktalar şunlar:

Öncelikle sistemde OpenSSL kurulu mu ve düzgün çalışıyor mu bak. openssl version komutu ile sürümü kontrol et. MySQL’in derlendiği OpenSSL sürümüyle sistemdeki sürüm çok alakasızsa bu tip hatalar çıkabiliyor.

Game source içindeki Makefile’ı açıp, kütüphanelerin eklendiği kısımda OpenSSL linkleri var mı kontrol et. Çoğu zaman şu satırlar eksik oluyor:

-lssl -lcrypto

Bunlar eklenmeden statik MySQL client kullanıldığında ld bu hataları veriyor.

Bir diğer ihtimal, sistemde birden fazla MySQL / MariaDB client bulunması. /usr/local/lib/mysql/libmysqlclient.a dosyasının gerçekten kullandığın MySQL sürümüne ait olduğundan emin ol. Yanlış sürümden gelen bir client da aynı hatayı üretir.

Eğer MariaDB kullanıyorsan, bu files’larda daha sık sorun çıkabiliyor. Lorenzo’nun files’ları genelde klasik MySQL’e göre hazırlanmış oluyor. Bu durumda ya uyumlu bir MySQL sürümüne geçmek ya da Makefile’ı MariaDB + OpenSSL uyumuna göre düzenlemek gerekiyor.

Kısacası:
Bu hata kodsal değil, tamamen MySQL client + OpenSSL link problemi. Doğru OpenSSL sürümü ve Makefile’a eklenen -lssl -lcrypto ile genelde sorunsuz şekilde derleme tamamlanıyor.

Kullandığın sistem (FreeBSD/Linux sürümü, MySQL ya da MariaDB versiyonu) bilgisini paylaşırsan, daha net bir yol da çizilebilir.
 
Çözüm
Merhabalar,

Aldığın hata derlemeden ziyade link aşamasında çıkıyor ve doğrudan Metin2 server source’larında MySQL–OpenSSL uyumsuzluğunu işaret ediyor. Kodlar derlenmiş gibi görünüyor ama en sonda game binary’si oluşturulurken MySQL client kütüphanesi, ihtiyaç duyduğu OpenSSL fonksiyonlarını bulamıyor.

Log’da geçen şu satırlar bunun göstergesi:

undefined reference to `SSL_get_peer_certificate'
undefined reference to `EVP_CIPHER_iv_length'
undefined reference to `EVP_CIPHER_block_size'

Bu hatalar genelde MySQL’in kullandığı libmysqlclient.a dosyasının OpenSSL’e bağlı olmasına rağmen, derleme sırasında OpenSSL kütüphanelerinin linklenmemesinden kaynaklanır. Yani sorun Lorenzo files’ta ya da eklediğin sistemlerde değil, tamamen kütüphane tarafında.

Kontrol etmen gereken noktalar şunlar:

Öncelikle sistemde OpenSSL kurulu mu ve düzgün çalışıyor mu bak. openssl version komutu ile sürümü kontrol et. MySQL’in derlendiği OpenSSL sürümüyle sistemdeki sürüm çok alakasızsa bu tip hatalar çıkabiliyor.

Game source içindeki Makefile’ı açıp, kütüphanelerin eklendiği kısımda OpenSSL linkleri var mı kontrol et. Çoğu zaman şu satırlar eksik oluyor:

-lssl -lcrypto

Bunlar eklenmeden statik MySQL client kullanıldığında ld bu hataları veriyor.

Bir diğer ihtimal, sistemde birden fazla MySQL / MariaDB client bulunması. /usr/local/lib/mysql/libmysqlclient.a dosyasının gerçekten kullandığın MySQL sürümüne ait olduğundan emin ol. Yanlış sürümden gelen bir client da aynı hatayı üretir.

Eğer MariaDB kullanıyorsan, bu files’larda daha sık sorun çıkabiliyor. Lorenzo’nun files’ları genelde klasik MySQL’e göre hazırlanmış oluyor. Bu durumda ya uyumlu bir MySQL sürümüne geçmek ya da Makefile’ı MariaDB + OpenSSL uyumuna göre düzenlemek gerekiyor.

Kısacası:
Bu hata kodsal değil, tamamen MySQL client + OpenSSL link problemi. Doğru OpenSSL sürümü ve Makefile’a eklenen -lssl -lcrypto ile genelde sorunsuz şekilde derleme tamamlanıyor.

Kullandığın sistem (FreeBSD/Linux sürümü, MySQL ya da MariaDB versiyonu) bilgisini paylaşırsan, daha net bir yol da çizilebilir.
Merhabalar, cevabınız ve bilgilendirmeniz için çok teşekkür ederim. Freebsd 14.0 (Enix'in paylaştığı) 13.3 ve 13.1 sürümlerinde bu durum ile karşı karşıya kaldım.
 
Merhabalar, cevabınız ve bilgilendirmeniz için çok teşekkür ederim. Freebsd 14.0 (Enix'in paylaştığı) 13.3 ve 13.1 sürümlerinde bu durum ile karşı karşıya kaldım.
Makefile dosyasının içeriğini buraya atar mısınız rica etsem?
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst