Çözüldü game source build ederken aldığım hata

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

poi

Üye
Üye
Mesaj
44
Beğeni
7
Puan
421
Ticaret Puanı
0
Merhabalar, game/src'nin içinde gmake çalıştırdığımda "/usr/bin/ld: cannot find -lIL" hatasını alıyorum. Sanırsam libdevil dosyamın içerisindeki .a uzantılı dosyaların eksikliğinden kaynaklanıyor. Sıfırdan altyapı hazırlama serisini mainline_released kullanarak takip ediyordum, aslında her şeyi birebir aynı yapmıştım ancak bu dosyaların eksikliği sanırsam problem oldu.

Normalde serinin novaline ile hazırlandığının farkındayım ama belki novaline dosyalarındaki .a uzantılı dosyaları libdevil'e atarsam sorunu çözerim diye düşünmüştüm ancak bu sefer de "/usr/bin/ld: cannot find -lmysqlclient" diye bir hata verdi. Deneyim olarak eksik olduğumdan dolayı soruyu sorarken eksik ve yanlış sormuş olabilirim, yönlendirirseniz sevinirim.

Game/src'deki makefile dosyam :

Makefile:
PLATFORM = $(shell file /bin/ls | cut -d' ' -f3 | cut -d'-' -f1)

GCC_VERSION = $(shell $(CC) --version 2>&1 | grep "(GCC)" | cut -d' ' -f3  | cut -d'.' -f1)
BSD_VERSION = $(shell uname -v 2>&1 | cut -d' ' -f2 | cut -d'.' -f1)
#SVN_VERSION = $(shell svnversion -n .)
SVN_VERSION = $(shell cat ../../__VERSION__)
P4_VERSION = $(shell cat ../../__VERSION__)
CC = g++

INCDIR =
LIBDIR =
BINDIR = ..
OBJDIR = OBJDIR
$(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi)

# Standard Setting
LIBS = -pthread -lm -lmd
# Removed -fno-rtti
CFLAGS = -g -Wall -O2 -m32 -pipe -fexceptions -fno-strict-aliasing -pthread -D_THREAD_SAFE -DNDEBUG # -D_USE_SERVER_KEY_

ifeq ($(GCC_VERSION), 4)
CFLAGS += -mtune=i686 -fstack-protector-all
else
CFLAGS += -mcpu=i686
endif

# boost
INCDIR += -I../../../Extern/include/boost

# DevIL
INCDIR += -I../../libdevil
LIBDIR += -L../../libdevil
LIBS += -lIL -lpng -ltiff -lmng -llcms -ljpeg

# MySQL
ifeq ($(BSD_VERSION), 7)
INCDIR += -I../../libmysql/7.x-5.1.35
LIBDIR += -L../../libmysql/7.x-5.1.35
else
INCDIR += -I../../libmysql/5.x-5.1.35
LIBDIR += -L../../libmysql/5.x-5.1.35
endif

LIBS += -lmysqlclient -lz

# Miscellaneous external libraries
INCDIR += -I../../../Extern/include
LIBDIR += -L../../../Extern/lib
LIBS += -lcryptopp -lgtest

# HackShield
INCDIR += -I../../libhackshield/include
LIBDIR += -L../../libhackshield/lib
LIBS += -lanticpxsvr

# XTrap
INCDIR += -I../../libxtrap/include

# openssl
#INCDIR += -I/usr/include
#LIBS += -lssl
#LIBS += /usr/lib/libssl.a

# Project Library
INCDIR += -I../../liblua/include
INCDIR += -I/usr/local/include
INCDIR += -I../../libserverkey
LIBDIR += -L../../libthecore/lib -L../../libpoly -L../../libsql -L../../libgame/lib -L../../liblua/lib -L../../libserverkey
LIBDIR += -L/usr/local/lib
LIBS += -lthecore -lpoly -llua -llualib -lsql -lgame -lserverkey
USE_STACKTRACE = 0
ifeq ($(USE_STACKTRACE), 1)
LIBS += /usr/local/lib/libexecinfo.a
endif

TARGET  = $(BINDIR)/game_r$(SVN_VERSION)

CFILE    = minilzo.c

CPPFILE = BattleArena.cpp FSM.cpp MarkConvert.cpp MarkImage.cpp MarkManager.cpp OXEvent.cpp TrafficProfiler.cpp ani.cpp\
          arena.cpp banword.cpp battle.cpp blend_item.cpp block_country.cpp buffer_manager.cpp building.cpp castle.cpp\
          char.cpp char_affect.cpp char_battle.cpp char_change_empire.cpp char_horse.cpp char_item.cpp char_manager.cpp\
          char_quickslot.cpp char_resist.cpp char_skill.cpp char_state.cpp PetSystem.cpp cmd.cpp cmd_emotion.cpp cmd_general.cpp\
          cmd_gm.cpp cmd_oxevent.cpp config.cpp constants.cpp crc32.cpp cube.cpp db.cpp desc.cpp\
          desc_client.cpp desc_manager.cpp desc_p2p.cpp dev_log.cpp dungeon.cpp empire_text_convert.cpp entity.cpp\
          entity_view.cpp event.cpp event_queue.cpp exchange.cpp file_loader.cpp fishing.cpp gm.cpp guild.cpp\
          guild_manager.cpp guild_war.cpp horse_rider.cpp horsename_manager.cpp input.cpp input_auth.cpp input_db.cpp\
          input_login.cpp input_main.cpp input_p2p.cpp input_teen.cpp input_udp.cpp ip_ban.cpp\
          item.cpp item_addon.cpp item_attribute.cpp item_manager.cpp item_manager_idrange.cpp locale.cpp\
          locale_service.cpp log.cpp login_data.cpp lzo_manager.cpp marriage.cpp matrix_card.cpp\
          messenger_manager.cpp mining.cpp mob_manager.cpp monarch.cpp motion.cpp over9refine.cpp p2p.cpp packet_info.cpp\
          party.cpp passpod.cpp pcbang.cpp polymorph.cpp priv_manager.cpp pvp.cpp\
          questevent.cpp questlua.cpp questlua_affect.cpp questlua_arena.cpp questlua_ba.cpp questlua_building.cpp\
          questlua_danceevent.cpp questlua_dungeon.cpp questlua_forked.cpp questlua_game.cpp questlua_global.cpp\
          questlua_guild.cpp questlua_horse.cpp questlua_pet.cpp questlua_item.cpp questlua_marriage.cpp questlua_mgmt.cpp\
          questlua_monarch.cpp questlua_npc.cpp questlua_oxevent.cpp questlua_party.cpp questlua_pc.cpp\
          questlua_quest.cpp questlua_target.cpp questmanager.cpp questnpc.cpp questpc.cpp\
          refine.cpp regen.cpp safebox.cpp sectree.cpp sectree_manager.cpp sequence.cpp shop.cpp\
          skill.cpp start_position.cpp target.cpp text_file_loader.cpp trigger.cpp utils.cpp vector.cpp war_map.cpp\
          wedding.cpp xmas_event.cpp version.cpp panama.cpp threeway_war.cpp map_location.cpp auth_brazil.cpp\
          BlueDragon.cpp BlueDragon_Binder.cpp DragonLair.cpp questlua_dragonlair.cpp\
          HackShield.cpp HackShield_Impl.cpp char_hackshield.cpp skill_power.cpp affect.cpp\
          SpeedServer.cpp questlua_speedserver.cpp XTrapManager.cpp\
          auction_manager.cpp FileMonitor_FreeBSD.cpp ClientPackageCryptInfo.cpp cipher.cpp\
          buff_on_attributes.cpp check_server.cpp dragon_soul_table.cpp DragonSoul.cpp\
          group_text_parse_tree.cpp char_dragonsoul.cpp questlua_dragonsoul.cpp\
          shop_manager.cpp shopEx.cpp item_manager_read_tables.cpp


COBJS    = $(CFILE:%.c=$(OBJDIR)/%.o)
CPPOBJS    = $(CPPFILE:%.cpp=$(OBJDIR)/%.o)

MAINOBJ = $(OBJDIR)/main.o
MAINCPP = main.cpp

TESTOBJ = $(OBJDIR)/test.o
TESTCPP = test.cpp
#TEST_TARGET = $(BINDIR)/test

default: $(TARGET) $(TEST_TARGET)

$(OBJDIR)/minilzo.o: minilzo.c
    @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@
    @echo compile $<

$(OBJDIR)/version.o: version.cpp
    @$(CC) $(CFLAGS) -D__USER__=\"$(USER)\" -D__HOSTNAME__=\"$(HOSTNAME)\" -D__PWD__=\"$(PWD)\" -D__SVN_VERSION__=\"$(SVN_VERSION)\" -c $< -o $@
    @echo compile $<

$(OBJDIR)/%.o: %.cpp
    @echo compile $<
    @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@

limit_time:
    @echo update limit time
    @python update_limit_time.py

$(TARGET): $(CPPOBJS) $(COBJS) $(MAINOBJ)
    @echo linking $(TARGET)....
    @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(MAINOBJ) $(LIBS) -o $(TARGET)

$(TEST_TARGET): $(TESTCPP) $(CPPOBJS) $(COBJS) $(TESTOBJ)
    @echo linking $(TEST_TARGET)
    @$(CC) $(CFLAGS) $(LIBDIR) $(COBJS) $(CPPOBJS) $(TESTOBJ) $(LIBS) -o ../test

clean:
    @rm -f $(COBJS) $(CPPOBJS)
    @rm -f $(BINDIR)/game_r* $(BINDIR)/conv

tag:
    ctags *.cpp *.h *.c

dep:
    makedepend -f Depend $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(CPPFILE) $(CFILE) $(MAINCPP) $(TESTCPP) 2> /dev/null > Depend

sinclude Depend
 
Çözüm
Dediğiniz gibi extern'deki lib'e attım dosyaları ve sorun çıkarmadı, gmake all'u deneyecektim şimdi ama en ana dizinden kastınız "home" folder'ının da mı gerisi olucak? Gerçi daha gerisinde gmake komutu çalışmayacak sanırsam makefile dosyası olmadığı için ama tam nerede çalıştırcağımdan emin olamadım.
Server dizininde olucak. game db common libmysql gibi klasörlerin olduğu dizini yazıp orada build al
libmysqlclienti externin içinde arıyor onun yerine bsddeki libe yönlendirebilirsiniz. bir örnek bırakayım

# MySQL
INCDIR += -I/usr/local/include/mysql
LIBS += /usr/local/lib/mysql/libmysqlclient.a /usr/lib/libz.a
 
libmysqlclienti externin içinde arıyor onun yerine bsddeki libe yönlendirebilirsiniz. bir örnek bırakayım

# MySQL
INCDIR += -I/usr/local/include/mysql
LIBS += /usr/local/lib/mysql/libmysqlclient.a /usr/lib/libz.a
Sağ ol hocam buna bakacağım ama bir de libdevildeki dosyalar hakkında fikir verebilir misin acaba? .a uzantılı dosyalar için kütüphaneyi derlemem gerektiği, derledikten sonra oluştuklarını söylediler ancak derleme işlemini nasıl gerçekleştirebilirim? Şu anda novalinedaki .a uzantılı dosyaları elimle alıp attım, diğer çözümünü de öğrensem güzel olur açıkçası.
 
Sağ ol hocam buna bakacağım ama bir de libdevildeki dosyalar hakkında fikir verebilir misin acaba? .a uzantılı dosyalar için kütüphaneyi derlemem gerektiği, derledikten sonra oluştuklarını söylediler ancak derleme işlemini nasıl gerçekleştirebilirim? Şu anda novalinedaki .a uzantılı dosyaları elimle alıp attım, diğer çözümünü de öğrensem güzel olur açıkçası.
.a uzantılı dosyaları libdevil değil externdeki lib klasörüne at. ayrıca en ana dizinden gmake all yapmayı dene. bu bütün libleri build edicektir.
 
.a uzantılı dosyaları libdevil değil externdeki lib klasörüne at. ayrıca en ana dizinden gmake all yapmayı dene. bu bütün libleri build edicektir.
Dediğiniz gibi extern'deki lib'e attım dosyaları ve sorun çıkarmadı, gmake all'u deneyecektim şimdi ama en ana dizinden kastınız "home" folder'ının da mı gerisi olucak? Gerçi daha gerisinde gmake komutu çalışmayacak sanırsam makefile dosyası olmadığı için ama tam nerede çalıştırcağımdan emin olamadım.
 
Dediğiniz gibi extern'deki lib'e attım dosyaları ve sorun çıkarmadı, gmake all'u deneyecektim şimdi ama en ana dizinden kastınız "home" folder'ının da mı gerisi olucak? Gerçi daha gerisinde gmake komutu çalışmayacak sanırsam makefile dosyası olmadığı için ama tam nerede çalıştırcağımdan emin olamadım.
Server dizininde olucak. game db common libmysql gibi klasörlerin olduğu dizini yazıp orada build al
 
Çözüm
Server dizininde olucak. game db common libmysql gibi klasörlerin olduğu dizini yazıp orada build al
Hocam verdiğiniz tavsiyeler işe yaradı çok teşekkür ederim, şu anda dediğim gibi youtubedaki sıfırdan altyapı videoları üzerinden ilerliyorum. Sayenizde bu hataları çözdüm ancak game/src'deki makefile dosyamdaki her "LIBS +=" kısmı hata veriyor. Şu anda sizin de yardımınızla mysql ve devil'in LIBS hatalarını çözdüm ancak diğerlerinin libleri orada yazdığı yerlerde değil. Dediğiniz gibi gmake all yapıyorum ve her hata alıp çözdüğümde yeni bir cannot find hatası geliyor. Videoların her saniyesini izleyip uygulayarak ilerledim ancak videoda hata alınmıyorken ben bu dosyaların bulunmadığıyla ilgili hatalar alıp duruyorum. Neden bende eksik olduklarını anlamadım.
 
Hocam verdiğiniz tavsiyeler işe yaradı çok teşekkür ederim, şu anda dediğim gibi youtubedaki sıfırdan altyapı videoları üzerinden ilerliyorum. Sayenizde bu hataları çözdüm ancak game/src'deki makefile dosyamdaki her "LIBS +=" kısmı hata veriyor. Şu anda sizin de yardımınızla mysql ve devil'in LIBS hatalarını çözdüm ancak diğerlerinin libleri orada yazdığı yerlerde değil. Dediğiniz gibi gmake all yapıyorum ve her hata alıp çözdüğümde yeni bir cannot find hatası geliyor. Videoların her saniyesini izleyip uygulayarak ilerledim ancak videoda hata alınmıyorken ben bu dosyaların bulunmadığıyla ilgili hatalar alıp duruyorum. Neden bende eksik olduklarını anlamadım.
youtubedeki dosyaları kullanıyorsan böyle bir hata almaman lazım. youtubedeki gördüklerini başka bir files üzerinde mi deniyorsun acaba
 
youtubedeki dosyaları kullanıyorsan böyle bir hata almaman lazım. youtubedeki gördüklerini başka bir files üzerinde mi deniyorsun acaba
youtube'da novaline kullanıyor ben ise mainline_released kullanıyorum ancak şimdi de hackshield'in lib'inin eksikliğiyle ilgili hata verdi. Zaten kaldırıcam ama libinin eksikliği yüzünden hata alıyorum. Hackshield novalineda da yok muydu videoda niye libinin eksikliğinin hatası alınmadı anlamadım. Şimdi zaten ileride kaldırıcağım için makefile'ın içinden sildim hackshieldın kısmını, belki çalışır diye.

Gerçi makefile'ın içini geziyordum ve fark ettim ki birazdan da

LIBS += /usr/local/lib/libexecinfo.a

bu satır yüzünden hata alıcam çünkü bende bu da yok :)

Not : Hackshield'ı kaldırınca error'ü yedim tabi normal olarak
 
youtube'da novaline kullanıyor ben ise mainline_released kullanıyorum ancak şimdi de hackshield'in lib'inin eksikliğiyle ilgili hata verdi. Zaten kaldırıcam ama libinin eksikliği yüzünden hata alıyorum. Hackshield novalineda da yok muydu videoda niye libinin eksikliğinin hatası alınmadı anlamadım. Şimdi zaten ileride kaldırıcağım için makefile'ın içinden sildim hackshieldın kısmını, belki çalışır diye.

Gerçi makefile'ın içini geziyordum ve fark ettim ki birazdan da

LIBS += /usr/local/lib/libexecinfo.a

bu satır yüzünden hata alıcam çünkü bende bu da yok :)

Not : Hackshield'ı kaldırınca error'ü yedim tabi normal olarak
novaline ile mainlinede farklılıklar var. videoya sabit kalıcaksanız aynı altyapıyı kullanmanızı tavsiye ederim.
 
novaline ile mainlinede farklılıklar var. videoya sabit kalıcaksanız aynı altyapıyı kullanmanızı tavsiye ederim.
mainline'dan devam etmeye çalışıcam hataları çöze çöze, en kötü dönerim novaline'a ama kime sorsam mainline tavsiye ediyor o yüzden bilemedim ben de xd

Novaline'dan hackshield'ın libini alıp mainline'ın içine yerleştirdim bu sefer gmake çalıştı, biraz liblerle uğraştırdı ama en azından artık cannot find dediği bir lib kalmadı.
 
novaline ile mainlinede farklılıklar var. videoya sabit kalıcaksanız aynı altyapıyı kullanmanızı tavsiye ederim.
Son 1 saattir 10 15 tane hatayı çözdüm ama malesef en sonunda çözemiyceğim bi sorunla karşılaştım, sanırsam bu işleri öğrenene kadar novaline'ı kullanmam gerekicek gibi duruyor. Aslında novaline da mainline da işin sonunda aynı olmuyor mu? Sonuçta fixler yapılıyor, gereksiz kodlar çıkarılıyor ve yine bir yerde eşitleniyorlar gibi hissediyorum.

Konuyu kapatabilirsiniz bu arada, teşekkür ederim.
 
Son 1 saattir 10 15 tane hatayı çözdüm ama malesef en sonunda çözemiyceğim bi sorunla karşılaştım, sanırsam bu işleri öğrenene kadar novaline'ı kullanmam gerekicek gibi duruyor. Aslında novaline da mainline da işin sonunda aynı olmuyor mu? Sonuçta fixler yapılıyor, gereksiz kodlar çıkarılıyor ve yine bir yerde eşitleniyorlar gibi hissediyorum.

Konuyu kapatabilirsiniz bu arada, teşekkür ederim.
siz mantığı çözene kadar aynı sayabilirsiniz. üzerinde bazı değişiklikler ve fixler var ama başlangıç seviyesinde düşünülecek şeyler değil bunlar. önce işi öğrenmeye çalışın daha sonra kendi altyapınızdan yürütürsünüz zaten her türlü. iyi forumlar dilerim.
 
  • Beğen
Tepkiler: poi
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst