Yardım DB build hatası

  • Konuyu açan Konuyu açan nebnebsen
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 19
  • Gösterim Gösterim 2K
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

nebnebsen

Geliştirici
Geliştirici
Üye
Mesaj
462
Çözümler
23
Beğeni
115
Puan
509
Ticaret Puanı
0
DB build ederken hata alıyorum. Kraizy içindeki mainline kullanarak gcc ve c++17 güncellemesi yaptım. Game build aldım. Db build etmiyor bir türlü. Çözemedim.

Hata:
Hata:
Genişlet Daralt Kopyala
root@nebisenol:/usr/src/Game-SRC/Server/db/src # gmake
compile Config.cpp
compile NetBase.cpp
In file included from NetBase.cpp:4:
ClientManager.h:5:10: fatal error: boost/unordered_map.hpp: No such file or directory
 #include <boost/unordered_map.hpp>
          ^~~~~~~~~~~~~~~~~~~~~~~~~

/usr/src/Game-SRC/Extern/include/boost/ içinde bu dediği dosyalar var. Kontrol ettim.
 
extern/include/boost içerisinde unordered_map.hpp bulunuyor mu ?
 
full build denedin mi ? belki diğer eklentileri build etmediğin için veriyodur.
 
Lib build al almadıysan
Hangi libi build alayım?

full build denedin mi ? belki diğer eklentileri build etmediğin için veriyodur.
Gmake all yapıp full build aldım.

#include <unordered_map> olarak değiştir tekrar dene
Denedim aynı hata.

Çözdüm fakat tam anlamadım. boost-all-1.72.0 paketini kurdum. Anlamadığım konu şu: Boostun sitesindeki 1.78.0 indirdim. extern/include/boost içerisine attım. pkg search boost yazdım ve boost-all-1.72.0 bu paketi buldum. Birinde sürüm 1.72.0, extern içindeki boost 1.78.0

tam olarak doğru bir şekildemi çözdüm bilmiyorum.

DB build alırken hata veriyor. Sebebini çözemedim. gmake all yapıp tüm libleri build aldım. mysql55 hem client hem server yüklü. Hatanın sebebi ne olabilir?

Kod:
Genişlet Daralt Kopyala
root@nebisenol:/usr/src/Game-SRC/Server/db/src # gmake
linking ...
/usr/local/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:52: ../db_r40250] Error 1
 
DB build alırken hata veriyor. Sebebini çözemedim. gmake all yapıp tüm libleri build aldım. mysql55 hem client hem server yüklü. Hatanın sebebi ne olabilir?

Kod:
Genişlet Daralt Kopyala
root@nebisenol:/usr/src/Game-SRC/Server/db/src # gmake
linking ...
/usr/local/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:52: ../db_r40250] Error 1
Merhaba @nebnebsen,

Aynı hata için yeni konu açmana gerek yok, konu üzerinden devam edebilirsin. Flood yapmamak için "düzenle" komutunu kullanabilirsin.

@Trashy, @Yeniceri, @tc1322,

Yeni hata yukarıdaki gibi, bilginiz var ise desteğinizi rica ederim.

İyi forumlar.
 
Hangi libi build alayım?


Gmake all yapıp full build aldım.


Denedim aynı hata.

Çözdüm fakat tam anlamadım. boost-all-1.72.0 paketini kurdum. Anlamadığım konu şu: Boostun sitesindeki 1.78.0 indirdim. extern/include/boost içerisine attım. pkg search boost yazdım ve boost-all-1.72.0 bu paketi buldum. Birinde sürüm 1.72.0, extern içindeki boost 1.78.0

tam olarak doğru bir şekildemi çözdüm bilmiyorum.

DB build alırken hata veriyor. Sebebini çözemedim. gmake all yapıp tüm libleri build aldım. mysql55 hem client hem server yüklü. Hatanın sebebi ne olabilir?

Kod:
Genişlet Daralt Kopyala
root@nebisenol:/usr/src/Game-SRC/Server/db/src # gmake
linking ...
/usr/local/bin/ld: cannot find -lmysqlclient
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:52: ../db_r40250] Error 1
Makefile dosyasında tanımlı olan mysql dizinlerinin doğru olup olmadığını kontrol et. Eğer yanlışsa dosyayı bulamıyor olabilir.
 
Makefile dosyasında tanımlı olan mysql dizinlerinin doğru olup olmadığını kontrol et. Eğer yanlışsa dosyayı bulamıyor olabilir.
Kontrol edicem. Birde anlamadığım birşey var. Makefile üzerinde sadece gcc c++ güncellemesi yaptım. Orjinal mainline sourcenin makefilesi. libtiff , linpng falan varya onları /usr/local/ kısmından çekiyor. Extern içindeki libleri sildim, hata vermesi gerekirken vermiyor. Freebsd kendi içinden çekiyor dosyaları. Bunu nasıl düzeltebilirim? Boost kütüphanesini bile /usr/local/boost içinden alıyor. Extern içinde boost var zaten. boost/unordered_map.hpp: No such file or directory hatasınıda boost kütüphanesini /usr/local/boost içine atarak çözdüm. Çözmüş sayılmam aslında. Extern içinden alması gerekiyor, extern bu yüzden var zaten :D bunu nasıl çözebilirim? Makefile içinde değişmem gereken bir yer var mı?
 
Kontrol edicem. Birde anlamadığım birşey var. Makefile üzerinde sadece gcc c++ güncellemesi yaptım. Orjinal mainline sourcenin makefilesi. libtiff , linpng falan varya onları /usr/local/ kısmından çekiyor. Extern içindeki libleri sildim, hata vermesi gerekirken vermiyor. Freebsd kendi içinden çekiyor dosyaları. Bunu nasıl düzeltebilirim? Boost kütüphanesini bile /usr/local/boost içinden alıyor. Extern içinde boost var zaten. boost/unordered_map.hpp: No such file or directory hatasınıda boost kütüphanesini /usr/local/boost içine atarak çözdüm. Çözmüş sayılmam aslında. Extern içinden alması gerekiyor, extern bu yüzden var zaten :D bunu nasıl çözebilirim? Makefile içinde değişmem gereken bir yer var mı?
1644675353805.png

Makefile dosyalarının içinden yolu belirtirseniz ordan çeker.
 
Makefile:
Genişlet Daralt Kopyala
# Boost
INCDIR += -I../../../Extern/include/boost

# MySQL
INCDIR += -I/usr/local/include/mysql
LIBS += /usr/local/lib/mysql/libmariadbclient.a /usr/lib/libz.a

# Project Libraries
INCDIR += -I/usr/local/include
INCDIR += -I../../../Extern/include
LIBDIR += -I../../../Extern/lib

LIBDIR += -L../../libthecore/lib -L../../libsql -L../../libpoly -L../../libgame/lib
LIBS += -lthecore -lsql -lpoly -lgame -lm
 
Makefile:
Genişlet Daralt Kopyala
# Boost
INCDIR += -I../../../Extern/include/boost

# MySQL
INCDIR += -I/usr/local/include/mysql
LIBS += /usr/local/lib/mysql/libmariadbclient.a /usr/lib/libz.a

# Project Libraries
INCDIR += -I/usr/local/include
INCDIR += -I../../../Extern/include
LIBDIR += -I../../../Extern/lib

LIBDIR += -L../../libthecore/lib -L../../libsql -L../../libpoly -L../../libgame/lib
LIBS += -lthecore -lsql -lpoly -lgame -lm
Teşekkürler, çözdüm. GCC10 ve c++17 build sorunsuz şu an. c++20 ye güncelledim bu kez çok farklı bi hata ile karşılaştım.

Kod:
Genişlet Daralt Kopyala
compile Config.cpp
In file included from /usr/local/lib/gcc10/include/c++/bits/node_handle.h:39,
                 from /usr/local/lib/gcc10/include/c++/bits/stl_tree.h:72,
                 from /usr/local/lib/gcc10/include/c++/map:60,
                 from ../../common/stl.h:6,
                 from stdafx.h:17,
                 from Config.cpp:1:
/usr/local/lib/gcc10/include/c++/optional: In function 'constexpr std::strong_ordering std::operator<=>(const std::optional<_Tp>&, std::nullopt_t)':
/usr/local/lib/gcc10/include/c++/optional:1081:24: error: invalid operands of types 'bool' and 'int' to binary 'operator<=>'
 1081 |     { return bool(__x) <=> false; }
      |              ~~~~~~~~~ ^~~
      |              |
      |              bool
gmake: *** [Makefile:58: .obj/Config.o] Error 1

Edit: GCC11 C++20'de sorun libthecore/include/stdafx.h içindeki bi satırdan kaynaklanıyormuş.

Kod:
Genişlet Daralt Kopyala
#ifndef false
#define false   0
#define true    (!false)
#endif

Bu satırı silince sorun düzeldi. Satırı silmeden nasıl düzeltilebilir? @Whistle
 
Son düzenleme:
Kod:
Genişlet Daralt Kopyala
MAKE = gmake
CC = g++11

INCDIR =
LIBDIR =
BINDIR = ..
OBJDIR = .obj

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)
P4_VERSION = 40250
$(shell if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi)

TARGET = $(BINDIR)/db_r$(P4_VERSION)

CFLAGS = -g -Wall -O2 -pipe -fno-rtti -std=c++20 -fno-exceptions -pthread -D_THREAD_SAFE

ifeq ($(GCC_VERSION), 4)
CFLAGS += -mtune=i686
else
CFLAGS += -mtune=i686
endif

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

# Extern
INCDIR += -I../../../Extern/include
LIBDIR += -I../../../Extern/lib

# Project Library
INCDIR += -I/usr/local/include
LIBDIR += -L../../libthecore/lib -L../../libsql -L../../libpoly -L../../libgame/lib
LIBS += -lthecore -lsql -lpoly -lgame -lm -lc++

# MySQL
INCDIR += -I/usr/local/include/mysql
LIBS += /usr/local/lib/mysql/libmysqlclient.a /usr/lib/libz.a /usr/local/lib/libzstd.a

SRCS =    Config.cpp NetBase.cpp Peer.cpp PeerBase.cpp Main.cpp Lock.cpp DBManager.cpp \
        Cache.cpp LoginData.cpp ClientManager.cpp ClientManagerPlayer.cpp ClientManagerLogin.cpp \
        ClientManagerBoot.cpp ClientManagerParty.cpp ClientManagerGuild.cpp GuildManager.cpp HB.cpp \
        PrivManager.cpp MoneyLog.cpp ItemAwardManager.cpp ClientManagerEventFlag.cpp Marriage.cpp \
        Monarch.cpp BlockCountry.cpp ItemIDRangeManager.cpp ClientManagerHorseName.cpp version.cpp \
        AuctionManager.cpp ProtoReader.cpp CsvReader.cpp

OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o)

default: $(TARGET)

$(TARGET): $(OBJS)
    @echo linking $(TARGET)...
    @$(CC) $(CFLAGS) $(LIBDIR) $(OBJS) $(LIBS) -o $(TARGET)
    @touch version.cpp

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

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

$(OBJDIR):
    @mkdir $(OBJDIR)

clean:
    @rm -f $(OBJS) $(BINDIR)/db_r*

dep:
    @touch Depend
    makedepend -fDepend $(INCDIR) -I/usr/include/c++/3.3 -I/usr/include/c++/4.2 -p$(OBJDIR)/ $(SRCS) 2> /dev/null

sinclude Depend
Makefile dosyanı paylaşabilir misin?
 
c++20 denemedim daha önce bilen biri varsa yardımcı olacaktır.
 
c++20 denemedim daha önce bilen biri varsa yardımcı olacaktır.
Kod:
Genişlet Daralt Kopyala
#ifndef false
#define false   0
#define true    (!false)
#endif

şu hataya sebep oluyor. Silince build alıyor. Acaba kodu silmeden, düzenleyerek build almanın yolu var mı? Kodun ne anlama geldiğini bilmiyorum.
 
Kod:
Genişlet Daralt Kopyala
#ifndef false
#define false   0
#define true    (!false)
#endif

şu hataya sebep oluyor. Silince build alıyor. Acaba kodu silmeden, düzenleyerek build almanın yolu var mı? Kodun ne anlama geldiğini bilmiyorum.

False true makrolarını içiren defineları dosyanın en altından en üstüne taşıyıp tekrar deneyin, sorun çözülecektir, saygılar.
 
Üst