-1

I am triying to compile on FreeBsd 12.1 .. and game and database source from Metin2 game . I am using gcc+6.5 and gnu gmake -j20 comand

Like all the files are getting compiled but in the last second it s getting me this error:

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 

This is my 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
9
  • 1
    You are failing to link with the correct libraries. – Kusalananda May 23 '20 at 20:54
  • How can I fix it ? – Alexandru May 23 '20 at 20:54
  • @Kusalananda I just added the Makefile file maybe it helps you to find a solution :D – Alexandru May 23 '20 at 20:59
  • A quick search reveals that function is in one of the OpenSSL libraries. Remember that order of the libraries matter when linking, so you might need to rearrange them to get the dependencies right. – Aaron D. Marasco May 23 '20 at 21:11
  • @AaronD.Marasco How can I do that ? – Alexandru May 23 '20 at 21:17
0

Your OpenSSL version is too new for your code.

The function was removed in Openssl 1.1.0

According to the changelog:

        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.

Either ask your upstream for a new version of the program, or try to change the code yourself

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.