Freebsd

製作:***米一個kef和le:228:._./克我__米一個ķ和F一世l和:228:../G一個米和Makefile:228: ../game錯誤 1

  • May 27, 2020

我正在嘗試在 FreeBsd 12.1 上編譯 .. 以及來自 Metin2 遊戲的遊戲和數據庫源。我正在使用 gcc+6.5 和 gnu gmake -j20 命令

就像所有文件都在編譯一樣,但在最後一秒它給了我這個錯誤:

linking ../game
ld: error: undefined symbol: ERR_free_strings
>>> referenced by vio.c
>>>               vio.c.o:(vio_end) in archive ../../../extern/mysql/lib/libmysqlclient.a


ld: error: undefined symbol: EVP_CIPHER_CTX_cleanup
>>> referenced by my_aes_openssl.cc
>>>               my_aes_openssl.cc.o:(my_aes_decrypt) in archive ../../../extern/mysql/lib/libmysqlclien                                                                                                                                    t.a
c++: error: linker command failed with exit code 1 (use -v to see invocation)
gmake: *** [Makefile:228: ../game] Error 

這是我的 Makefile

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

### CFLAGS
CFLAGS = -w -O3 -ggdb -g -gdwarf -std=c++14 -pipe -mtune=i386 -fstack-protector -m32 -static -D_THREAD_SAFE
### END

### LIBS FROM ../EXTERN and LOCAL/INCLUDE
# boost    (for boost, you need to install boost from PuTTY. Example: pkg install boost-libs).
INCDIR += -I/usr/local/include
# GSL: Guideline Support Library
INCDIR += -I../../../extern/gsl/include
# cryptopp (if cryptopp doesn't work, you need download src cryptopp 5.6.5 from https://github.com/weidai11/cryptopp/releases/tag/CRYPTOPP_5_6_5 and recompile with your actually compiller (g++/c++).
INCDIR += -I../../../extern/cryptopp
LIBDIR += -L../../../extern/cryptopp/lib
LIBS += -lcryptopp
# devil    (for that, you need to install devIL from PuTTY. Example: pkg install devil).
INCDIR += -I../../../local/include
LIBDIR += -L/usr/local/lib
LIBS   += -lil -lpng -ltiff -lmng -llcms -ljpeg -ljbig -llzma
# minilzo
INCDIR += -I../../../extern/minilzo
LIBDIR += -L../../../extern/minilzo/lib
LIBS   += -lminilzo -lmd
# mysql
INCDIR += -I/usr/local/include/mysql
LIBDIR += -L../../../extern/mysql/lib
LIBS   += -lmysqlclient -lz -pthread -lm -lssl -lcrypto
### END

### LIBS FROM ../SOURCE/LIB
# libgame
INCDIR += -I../../lib/libgame
LIBDIR += -L../../lib/libgame/lib
LIBS   += -lgame
# libpoly
INCDIR += -I../../lib/libpoly
LIBDIR += -L../../lib/libpoly/lib
LIBS   += -lpoly
# libsql
INCDIR += -I../../lib/libsql
LIBDIR += -L../../lib/libsql/lib
LIBS   += -lsql
# libthecore
INCDIR += -I../../lib/libthecore
LIBDIR += -L../../lib/libthecore/lib
LIBS   += -lthecore
# lua
INCDIR += -I../../../extern/lua/lua
LIBDIR += -L../../../extern/lua/lib
LIBS   += -llua
### END

CPP =   abuse.cpp\
       activity.cpp\
       affect.cpp\
       ani.cpp\
       arena.cpp\
       banword.cpp\
       battle.cpp\
       BattleArena.cpp\
       blend_item.cpp\
       BlueDragon.cpp\
       BlueDragon_Binder.cpp\
       buff_on_attributes.cpp\
       buffer_manager.cpp\
       building.cpp\
       char.cpp\
       char_affect.cpp\
       char_battle.cpp\
       char_change_empire.cpp\
       char_dragonsoul.cpp\
       char_gaya.cpp\
       char_horse.cpp\
       char_item.cpp\
       char_manager.cpp\
       char_quickslot.cpp\
       char_resist.cpp\
       char_skill.cpp\
       char_state.cpp\
       cmd.cpp\
       cmd_emotion.cpp\
       cmd_general.cpp\
       cmd_gm.cpp\
       cmd_oxevent.cpp\
       config.cpp\
       constants.cpp\
       crc32.cpp\
       cube.cpp\
       damage_top.cpp\
       db.cpp\
       desc.cpp\
       desc_client.cpp\
       desc_manager.cpp\
       desc_p2p.cpp\
       dragon_soul_table.cpp\
       DragonLair.cpp\
       DragonSoul.cpp\
       dungeon.cpp\
       empire_text_convert.cpp\
       entity.cpp\
       entity_view.cpp\
       event.cpp\
       event_queue.cpp\
       exchange.cpp\
       file_loader.cpp\
       fishing.cpp\
       FSM.cpp\
       gm.cpp\
       group_text_parse_tree.cpp\
       guild.cpp\
       guild_manager.cpp\
       guild_war.cpp\
       horse_rider.cpp\
       horsename_manager.cpp\
       input.cpp\
       input_api.cpp\
       input_auth.cpp\
       input_db.cpp\
       input_login.cpp\
       input_main.cpp\
       input_p2p.cpp\
       inventory.cpp\
       item.cpp\
       item_addon.cpp\
       item_attribute.cpp\
       item_manager.cpp\
       item_manager_idrange.cpp\
       item_manager_read_tables.cpp\
       locale.cpp\
       locale_service.cpp\
       log.cpp\
       login_data.cpp\
       lzo_manager.cpp\
       main.cpp\
       map_location.cpp\
       MarkConvert.cpp\
       MarkImage.cpp\
       MarkManager.cpp\
       marriage.cpp\
       MeleyLair.cpp\
       messenger_manager.cpp\
       mining.cpp\
       mob_manager.cpp\
       motion.cpp\
       MountSystem.cpp\
       nearby_scanner.cpp\
       New_PetSystem.cpp\
       OXEvent.cpp\
       p2p.cpp\
       packet_info.cpp\
       party.cpp\
       PetSystem.cpp\
       polymorph.cpp\
       priv_manager.cpp\
       pvp.cpp\
       questevent.cpp\
       questlua.cpp\
       questlua_affect.cpp\
       questlua_arena.cpp\
       questlua_battleArena.cpp\
       questlua_building.cpp\
       questlua_danceevent.cpp\
       questlua_dragonlair.cpp\
       questlua_dragonsoul.cpp\
       questlua_dungeon.cpp\
       questlua_game.cpp\
       questlua_global.cpp\
       questlua_guild.cpp\
       questlua_horse.cpp\
       questlua_item.cpp\
       questlua_marriage.cpp\
       questlua_MeleyLair.cpp\
       questlua_npc.cpp\
       questlua_oxevent.cpp\
       questlua_party.cpp\
       questlua_pc.cpp\
       questlua_pet.cpp\
       questlua_petnew.cpp\
       questlua_quest.cpp\
       questlua_support.cpp\
       questlua_target.cpp\
       questlua_TempleOchao.cpp\
       questmanager.cpp\
       questnpc.cpp\
       questpc.cpp\
       reborn.cpp\
       refine.cpp\
       regen.cpp\
       safebox.cpp\
       sectree.cpp\
       sectree_manager.cpp\
       shop.cpp\
       shop_manager.cpp\
       shopEx.cpp\
       skill.cpp\
       skill_power.cpp\
       snow_flake_flr.cpp\
       start_position.cpp\
       SupportSystem.cpp\
       target.cpp\
       TempleOchao.cpp\
       text_file_loader.cpp\
       trigger.cpp\
       utils.cpp\
       vector.cpp\
       war_map.cpp\
       wedding.cpp\
       whisper_admin.cpp\
       cipher.cpp\

CPPOBJS = $(CPP:%.cpp=$(OBJDIR)/%.o)

GAME_TARGET = $(BINDIR)/game

default: $(GAME_TARGET)

$(OBJDIR)/%.o: %.cpp
   @echo -e "\033[0;32m [OK] \033[0m" $<
   @$(CC) $(CFLAGS) $(INCDIR) -c $< -o $@

$(GAME_TARGET): $(CPPOBJS)
   @echo linking $(GAME_TARGET)
   @$(CC) $(CFLAGS) $(LIBDIR) $(CPPOBJS) $(LIBS) -o $(GAME_TARGET)

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

tag:
   ctags *.cpp *.h

您的 OpenSSL 版本對於您的程式碼來說太新了。

Openssl 1.1.0 中刪除了該功能

根據變更日誌:

       EVP_MD_CTX_cleanup(), EVP_CIPHER_CTX_cleanup() and
       HMAC_CTX_cleanup() were removed.  HMAC_CTX_reset() and
       EVP_MD_CTX_reset() should be called instead to reinitialise
       an already created structure.

要麼向上游詢問程序的新版本,要麼嘗試自己更改程式碼

引用自:https://unix.stackexchange.com/questions/588560