Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GCC-C++ 14.0.1: Undefined reference to void Spell::SearchTargets #29952

Closed
alexashx opened this issue May 2, 2024 · 5 comments
Closed

GCC-C++ 14.0.1: Undefined reference to void Spell::SearchTargets #29952

alexashx opened this issue May 2, 2024 · 5 comments

Comments

@alexashx
Copy link

alexashx commented May 2, 2024

Description

I get an error when try to make install in master, wotlk_classic or cata_classic
gcc-c++ version is 14.0, cmake version is 3.28

/usr/bin/ld: ../game/libgame.a(SpellAuras.cpp.o): in function `UnitAura::FillTargetMap(std::unordered_map<Unit*, unsigned int, std::hash<Unit*>, std::equal_to<Unit*>, std::allocator<std::pair<Unit* const, unsigned int> > >&, Unit*)':
/path_to_server_source/src/server/game/Spells/Auras/SpellAuras.cpp:2608:(.text+0xaca6): undefined reference to `void Spell::SearchTargets<Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck> >(Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck>&, unsigned int, WorldObject*, Position const*, float)'
collect2: error: ld returned 1 exit status
make[2]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/build.make:198: src/server/worldserver/worldserver] Error 1
make[1]: *** [CMakeFiles/Makefile2:1403: src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2
make: *** [Makefile:136: all] Error 2

Expected behaviour

Server installed successfully

Steps to reproduce the problem

  1. cmake -DBUILD_EXTRACTORS=1 -DTOOLS=1 -DCMAKE_INSTALL_PREFIX="/path_to_server/" "/path_to_server/source"
  2. make
  3. make install

Branch

master

TC rev. hash/commit

a39d0db

Operating system

Fedora 40 x64

Custom changes

None

@Fabi
Copy link
Contributor

Fabi commented May 2, 2024

Try the command line from the wiki including clang. This will speedup the build and work for now. Plain gcc gives an error. you are right

@alexashx
Copy link
Author

alexashx commented May 2, 2024

I try to run the command from wiki (without any params):
clang 18.1.1

cmake ../ -DCMAKE_INSTALL_PREFIX="/path_to_server/"
make -j6

and I've got an error:

[  0%] Built target sfmt
[  0%] Built target fmt
[  1%] Built target Recast
[  1%] Built target Detour
[  1%] Built target openssl_ed25519
[  1%] Built target argon2
[  2%] Built target gsoap
[  4%] Built target jemalloc
[  6%] Built target protobuf
[ 12%] Built target casc
[ 12%] Built target g3dlib
[ 12%] Built target revision_data.h
[ 16%] Built target common
[ 16%] Building CXX object src/tools/extractor_common/CMakeFiles/extractor_common.dir/CascHandles.cpp.o
[ 16%] Building CXX object src/tools/vmap4_assembler/CMakeFiles/vmap4assembler.dir/TileAssembler.cpp.o
[ 17%] Building CXX object src/tools/vmap4_assembler/CMakeFiles/vmap4assembler.dir/VMapAssembler.cpp.o
[ 17%] Building CXX object src/tools/extractor_common/CMakeFiles/extractor_common.dir/DB2CascFileSource.cpp.o
[ 18%] Built target database
[ 23%] Built target proto
[ 24%] Built target shared
[ 25%] Built target bnetserver
[ 71%] Built target scripts
[ 97%] Built target game
[ 98%] Linking CXX executable worldserver
[ 98%] Linking CXX executable vmap4assembler
[ 98%] Built target vmap4assembler
[ 98%] Linking CXX static library libextractor_common.a
[ 98%] Built target extractor_common
[ 99%] Building CXX object src/tools/map_extractor/CMakeFiles/mapextractor.dir/loadlib.cpp.o
[ 99%] Building CXX object src/tools/map_extractor/CMakeFiles/mapextractor.dir/System.cpp.o
[ 99%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/IntermediateValues.cpp.o
[ 99%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/MapBuilder.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/adtfile.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/cascfile.cpp.o
[ 99%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/PathGenerator.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/gameobject_extract.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/model.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/vmapexport.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/wdtfile.cpp.o
[100%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/TerrainBuilder.cpp.o
[100%] Linking CXX executable mapextractor
[100%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/wmo.cpp.o
[100%] Built target mapextractor
/usr/bin/ld: ../game/libgame.a(SpellAuras.cpp.o): in function `UnitAura::FillTargetMap(std::unordered_map<Unit*, unsigned int, std::hash<Unit*>, std::equal_to<Unit*>, std::allocator<std::pair<Unit* const, unsigned int> > >&, Unit*)':
/path_to_server/source/src/server/game/Spells/Auras/SpellAuras.cpp:2591:(.text+0xa93b): undefined reference to `void Spell::SearchTargets<Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck> >(Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck>&, unsigned int, WorldObject*, Position const*, float)'
collect2: error: ld returned 1 exit status
make[2]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/build.make:198: src/server/worldserver/worldserver] Error 1
make[1]: *** [CMakeFiles/Makefile2:1403: src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Linking CXX executable vmap4extractor
[100%] Built target vmap4extractor
[100%] Linking CXX executable mmaps_generator
[100%] Built target mmaps_generator
make: *** [Makefile:136: all] Error 2

@Fabi
Copy link
Contributor

Fabi commented May 2, 2024

I try to run the command from wiki (without any params): clang 18.1.1

cmake ../ -DCMAKE_INSTALL_PREFIX="/path_to_server/"
make -j6

and I've got an error:

[  0%] Built target sfmt
[  0%] Built target fmt
[  1%] Built target Recast
[  1%] Built target Detour
[  1%] Built target openssl_ed25519
[  1%] Built target argon2
[  2%] Built target gsoap
[  4%] Built target jemalloc
[  6%] Built target protobuf
[ 12%] Built target casc
[ 12%] Built target g3dlib
[ 12%] Built target revision_data.h
[ 16%] Built target common
[ 16%] Building CXX object src/tools/extractor_common/CMakeFiles/extractor_common.dir/CascHandles.cpp.o
[ 16%] Building CXX object src/tools/vmap4_assembler/CMakeFiles/vmap4assembler.dir/TileAssembler.cpp.o
[ 17%] Building CXX object src/tools/vmap4_assembler/CMakeFiles/vmap4assembler.dir/VMapAssembler.cpp.o
[ 17%] Building CXX object src/tools/extractor_common/CMakeFiles/extractor_common.dir/DB2CascFileSource.cpp.o
[ 18%] Built target database
[ 23%] Built target proto
[ 24%] Built target shared
[ 25%] Built target bnetserver
[ 71%] Built target scripts
[ 97%] Built target game
[ 98%] Linking CXX executable worldserver
[ 98%] Linking CXX executable vmap4assembler
[ 98%] Built target vmap4assembler
[ 98%] Linking CXX static library libextractor_common.a
[ 98%] Built target extractor_common
[ 99%] Building CXX object src/tools/map_extractor/CMakeFiles/mapextractor.dir/loadlib.cpp.o
[ 99%] Building CXX object src/tools/map_extractor/CMakeFiles/mapextractor.dir/System.cpp.o
[ 99%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/IntermediateValues.cpp.o
[ 99%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/MapBuilder.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/adtfile.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/cascfile.cpp.o
[ 99%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/PathGenerator.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/gameobject_extract.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/model.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/vmapexport.cpp.o
[ 99%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/wdtfile.cpp.o
[100%] Building CXX object src/tools/mmaps_generator/CMakeFiles/mmaps_generator.dir/TerrainBuilder.cpp.o
[100%] Linking CXX executable mapextractor
[100%] Building CXX object src/tools/vmap4_extractor/CMakeFiles/vmap4extractor.dir/wmo.cpp.o
[100%] Built target mapextractor
/usr/bin/ld: ../game/libgame.a(SpellAuras.cpp.o): in function `UnitAura::FillTargetMap(std::unordered_map<Unit*, unsigned int, std::hash<Unit*>, std::equal_to<Unit*>, std::allocator<std::pair<Unit* const, unsigned int> > >&, Unit*)':
/path_to_server/source/src/server/game/Spells/Auras/SpellAuras.cpp:2591:(.text+0xa93b): undefined reference to `void Spell::SearchTargets<Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck> >(Trinity::WorldObjectListSearcher<Trinity::WorldObjectSpellAreaTargetCheck>&, unsigned int, WorldObject*, Position const*, float)'
collect2: error: ld returned 1 exit status
make[2]: *** [src/server/worldserver/CMakeFiles/worldserver.dir/build.make:198: src/server/worldserver/worldserver] Error 1
make[1]: *** [CMakeFiles/Makefile2:1403: src/server/worldserver/CMakeFiles/worldserver.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[100%] Linking CXX executable vmap4extractor
[100%] Built target vmap4extractor
[100%] Linking CXX executable mmaps_generator
[100%] Built target mmaps_generator
make: *** [Makefile:136: all] Error 2

Can't reproduce it with the commands from the wiki and clang. Only when not having clang installed or using plain gcc directly. The commands on the wiki will make sure to use clang.

You can also post your cmake output, but I'm pretty sure you forgot

rm -f /usr/bin/c++
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

@alexashx
Copy link
Author

alexashx commented May 2, 2024

Can't reproduce it with the commands from the wiki and clang. Only when not having clang installed or using plain gcc directly. The commands on the wiki will make sure to use clang.

You can also post your cmake output, but I'm pretty sure you forgot

rm -f /usr/bin/c++
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100

Yeah, I somehow missed that
I ran this commands, cleared build directory and remake.
After that project built and installed successfully. I have never seen such a clean make.
Sorry for my carelessness.
The issue can be closed.

@Aokromes Aokromes closed this as completed May 2, 2024
@Aokromes Aokromes reopened this May 2, 2024
@Shauren
Copy link
Member

Shauren commented May 27, 2024

0fb8143

@Shauren Shauren closed this as completed May 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants