Jump to content
  • Realm server fails to compile


    Xenithar
    • Status: Completed
      Main Category: Core / Mangos Daemon
      Sub-Category: Show Stopper
      Version: 0.20(currentmasterbranch) Milestone: 20 Priority: Urgent
      Implemented Version: 0.20(currentmasterbranch)

    The realmd executable will not link

    Got a new one. I just got home and cloned/built the latest R20, but it gets to 99% every time and then this.
    [code]
    Linking CXX executable realmd
    /usr/bin/ld: cannot find -lace
    collect2: error: ld returned 1 exit status
    make[2]: *** [src/realmd/realmd] Error 1
    make[1]: *** [src/realmd/CMakeFiles/realmd.dir/all] Error 2
    make: *** [all] Error 2
    [/code]
    Due to this, I cannot verify any of the recent fixes under Linux which were added while I was on vacation. My initial instinct tells me that this parameter is being treated as a file for some reason.


    User Feedback

    Recommended Comments

    I use external ACE, which is present. Nothing changed. I compiled, went on vacation, returned, cloned fresh, compile failed. I have not changed my system in any way.
    [code]
    ???@WoW01:~$ dpkg --get-selections | grep ace
    libace-6.0.3 install
    libace-dev install
    traceroute install
    ???@WoW01:~$
    [/code]
    So it is there. Something changed since I left two weeks ago.

    *EDIT*

    Also, this:
    [code]
    ???@WoW01:~/zero/src/server/build$ make
    [ 0%] Built target genrev
    [ 0%] Built target revision.h
    [ 1%] Built target detour
    [ 3%] Built target recast
    [ 11%] Built target g3dlite
    [ 14%] Built target zlib
    [ 15%] Built target bzip2
    [ 16%] Built target libmpq
    [ 23%] Built target lualib
    [ 24%] Built target framework
    [ 29%] Built target shared
    [ 30%] Built target LuaEngine
    [ 30%] Built target pchdef.cpp_dephelp
    [ 30%] Built target generate_pchdef.cpp
    [ 30%] Built target precompiled.cpp_dephelp
    [ 31%] Built target generate_precompiled.cpp
    [ 68%] Built target mangosscript
    [ 98%] Built target game
    Linking CXX executable realmd
    /usr/bin/ld: cannot find -lace
    collect2: error: ld returned 1 exit status
    make[2]: *** [src/realmd/realmd] Error 1
    make[1]: *** [src/realmd/CMakeFiles/realmd.dir/all] Error 2
    make: *** [all] Error 2
    [/code]

    *UPDATE*

    The "link.txt" file for realmd is all screwed up.
    [code]
    /usr/bin/c++ -g -g -Wall -Wfatal-errors -Wextra -Winvalid-pch -Wl,--no-as-needed -ldl -pthread -lrt CMakeFiles/realmd.dir/AuthSocket.cpp.o CMakeFiles/realmd.dir/BufferedSocket.cpp.o CMakeFiles/realmd.dir/Main.cpp.o CMakeFiles/realmd.dir/PatchHandler.cpp.o CMakeFiles/realmd.dir/RealmList.cpp.o -o realmd -rdynamic ../shared/libshared.a ../framework/libframework.a -lace -lmysqlclient_r -lssl -lcrypto -Wl,-rpath,/home/???/zero/lib
    [/code]
    First, there are two "-g" parameters. Why? Next, I see "-Wl" with comma, but no commas for the other parameters. If we're passing multiple parameters to the linker, it should be a comma-separated list. Finally, I see additional parameters at the end of the command and the another "-Wl" with a proper set of commands. It does not look correct to me. Can somebody verify that we're supposed to have it this way? I do not believe we should have to "-g" parameters and I am still not following the entire syntax here.

    Link to comment
    Share on other sites

    A lot changed since you left two weeks ago, we're currently working on restructuring the entire source as well as rewriting the build system :) What OS are you using and what cmake params are you using? Mind attempting to compile with internal ace to see if you have the same issues?

    Link to comment
    Share on other sites

    Same as always, Debian GNU/Linux. Parameters are as follows.
    [code]
    -DDEBUG=1 -DUSE_STD_MALLOC=1 -DACE_USE_EXTERNAL=1 -DPOSTGRESQL=0 -DBUILD_TOOLS=0 -DSCRIPT_LIB_ELUNA=1 -DSCRIPT_LIB_SD2=1 -DCMAKE_INSTALL_PREFIX=/home/???/zero
    [/code]
    The question marks simply hide my username. I don't want it shown.

    Link to comment
    Share on other sites

    It compiled, but there is a new problem. The binaries did not get installed to /bin, they installed in the root along with the configuration files. In other words, I did not get /bin or /etc as it should. This would break installing it on any OS as an OS package aside from possibly Windows.

    *UPDATE*

    Upon creating the correct directories and sorting the files into it, it cannot find the configuration files. Something is VERY broken here outside of not being able to use the external libraries.

    Link to comment
    Share on other sites

    Good to hear :) The install location was made to be structurally similar to Windows, thus the binaries not being added to the bin folder. Will discuss this with LFX and Rochet as they know the install system better than I do. Will also take a look at using external Ace once we're done porting the system to One.

    Edit:

    Saw your update, it is not broken per se. For cmake to work properly on windows with a configurable conf dir, as that was wanted by a few, a new cmake option was added where you can specifically configure the path to the conf dir. -DCONF_DIR

    Link to comment
    Share on other sites

    I see. The default location for binaries and for configuration files is not sane in any environment I use.

    Also, we need ACE working. I have had all kinds of trouble with the internal ACE in the past, external works. This should be top priority.

    *EDIT*

    Let's handle the install locations in that ticket. This one is still about no longer being able to use ACE.

    Link to comment
    Share on other sites

    Like I said, it is a work in progress. Fixing up the build system is not a one-step task. There is no need to get heated what so ever, simply state what is wrong, how it should be, and we'll get to it. If it is more urgent than that, you could always look at the install file and do the necessary changes for this to work like it should on Linux.

    For reference sake, the internal ace library has been completely switched out.

    Link to comment
    Share on other sites

    Alright, I am stuck. I am still getting this after a fresh clone. It is my belief that the internal ACE is causing me issues (both recent crashes referenced ACE) and it has caused issues in the past. However, I am unable to even build the server using my external libraries which do work. It is my belief that if I can simply use the correct library the new logic_error crash will disappear. What do I have to do or edit to allow this to work? I have no clue what was changed or where which broke it.
    [code]
    Linking CXX executable realmd
    /usr/bin/ld: cannot find -lace
    collect2: error: ld returned 1 exit status
    make[2]: *** [src/realmd/realmd] Error 1
    make[1]: *** [src/realmd/CMakeFiles/realmd.dir/all] Error 2
    make: *** [all] Error 2
    There was an error building MaNGOS!
    [/code]
    This is with a fresh clone from about thirty minutes ago.

    Link to comment
    Share on other sites

    FIXED! It MUST be capitalized. Try this instead.
    [code]
    -lACE
    [/code]
    Compiled instantly. Remember, *nix is case-sensitive. I should have caught that sooner.

    *UPDATE*

    Seems mangosd is the same way.
    [code]
    Linking CXX executable realmd
    [ 99%] Built target realmd
    Scanning dependencies of target mangosd
    [ 99%] Building CXX object src/mangosd/CMakeFiles/mangosd.dir/CliRunnable.cpp.o
    [ 99%] Building CXX object src/mangosd/CMakeFiles/mangosd.dir/Main.cpp.o
    [ 99%] Building CXX object src/mangosd/CMakeFiles/mangosd.dir/Master.cpp.o
    [100%] Building CXX object src/mangosd/CMakeFiles/mangosd.dir/RASocket.cpp.o
    [100%] Building CXX object src/mangosd/CMakeFiles/mangosd.dir/WorldRunnable.cpp.o
    /home/---/zero/src/server/src/mangosd/WorldRunnable.cpp: In member function âvirtual void WorldRunnable::run()â:
    /home/---/zero/src/server/src/mangosd/WorldRunnable.cpp:54:12: warning: variable ârealPrevTimeâ set but not used [-Wunused-but-set-variable]
    Linking CXX executable mangosd
    /usr/bin/ld: cannot find -lace
    collect2: error: ld returned 1 exit status
    make[2]: *** [src/mangosd/mangosd] Error 1
    make[1]: *** [src/mangosd/CMakeFiles/mangosd.dir/all] Error 2
    make: *** [all] Error 2
    [/code]
    Now let me edit the link.txt and capitalize ACE...
    [code]
    ---@WoW01:~/zero/src/server/build$ nano ./src/mangosd/CMakeFiles/mangosd.dir/link.txt
    ---@WoW01:~/zero/src/server/build$ make
    [ 0%] Built target genrev
    [ 1%] Built target detour
    [ 3%] Built target recast
    [ 11%] Built target g3dlite
    [ 14%] Built target zlib
    [ 15%] Built target bzip2
    [ 16%] Built target libmpq
    [ 23%] Built target lualib
    [ 24%] Built target framework
    [ 29%] Built target shared
    [ 29%] Built target precompiled.cpp_dephelp
    [ 30%] Built target generate_precompiled.cpp
    [ 67%] Built target mangosscript
    [ 67%] Built target pchdef.cpp_dephelp
    [ 67%] Built target generate_pchdef.cpp
    [ 68%] Built target LuaEngine
    [ 98%] Built target game
    [ 99%] Built target realmd
    Linking CXX executable mangosd
    [100%] Built target mangosd
    [/code]
    That is all it is. So, mind pushing a fix for that, Foereaper?

    Link to comment
    Share on other sites



    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use