AliceStats / DevKit

Development Kit for Alice - Work in progress
5 stars 2 forks source link

[Error] compilation error #2

Closed ericp1337 closed 10 years ago

ericp1337 commented 10 years ago

Generated the makefile from CMake with this command:

cmake .. -DALICE_INCLUDE_DIR=/home/eric/Documents/Github/Alice/src -DALICE_LIBRARIES=/home/eric/Documents/Github/Alice/build
Linking CXX executable alice-devkit
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `operator()':
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:351: undefined reference to `dota::parser::getEntities()'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:312: undefined reference to `dota::parser::getEntities()'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:190: undefined reference to `dota::parser::~parser()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `dem_stream_file':
/home/eric/Documents/Github/Alice/src/alice/dem_stream_file.hpp:56: undefined reference to `vtable for dota::dem_stream_file'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `operator()':
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:195: undefined reference to `dota::parser::parser(dota::settings, dota::dem_stream*)'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:196: undefined reference to `dota::parser::open(std::string)'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `dota::devkit_session::bind()':
/home/eric/Documents/Github/DevKit/src/devkit_http.hpp:65: undefined reference to `dota::parser::getHandler()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `operator()':
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:254: undefined reference to `dota::parser::~parser()'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:231: undefined reference to `dota::parser::read()'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:279: undefined reference to `dota::parser::getStringtables()'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:419: undefined reference to `dota::parser::getSendtables()'
/home/eric/Documents/Github/DevKit/src/devkit_http.cpp:463: undefined reference to `dota::parser::getFlattables()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `dota::devkit_session::handlePlayer(dota::cbObject<dota::entity*, unsigned int>*)':
/home/eric/Documents/Github/DevKit/src/devkit_http.hpp:140: undefined reference to `dota::parser::getEntities()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `dota::devkit_session::handleReady(dota::cbObject<unsigned int, unsigned int>*)':
/home/eric/Documents/Github/DevKit/src/devkit_http.hpp:71: undefined reference to `dota::parser::getEntityIdFor(std::string)'
/home/eric/Documents/Github/DevKit/src/devkit_http.hpp:71: undefined reference to `dota::parser::getHandler()'
/home/eric/Documents/Github/DevKit/src/devkit_http.hpp:74: undefined reference to `dota::parser::getEntityIdFor(std::string)'
/home/eric/Documents/Github/DevKit/src/devkit_http.hpp:74: undefined reference to `dota::parser::getHandler()'
collect2: error: ld returned 1 exit status
CMakeFiles/alice-devkit.dir/build.make:236: recipe for target 'alice-devkit' failed
make[2]: *** [alice-devkit] Error 1
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/alice-devkit.dir/all' failed
make[1]: *** [CMakeFiles/alice-devkit.dir/all] Error 2
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2
invokr commented 10 years ago

First of all, make sure you are using the same linking options when compiling alice and the devkit. If those are identical, please post the output of make VERBOSE=1 for both of them.

ericp1337 commented 10 years ago
/usr/bin/cmake -H/home/eric/Documents/Github/DevKit -B/home/eric/Documents/Github/DevKit/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/eric/Documents/Github/DevKit/build/CMakeFiles /home/eric/Documents/Github/DevKit/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/eric/Documents/Github/DevKit/build'
make -f CMakeFiles/alice-devkit.dir/build.make CMakeFiles/alice-devkit.dir/depend
make[2]: Entering directory '/home/eric/Documents/Github/DevKit/build'
cd /home/eric/Documents/Github/DevKit/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/eric/Documents/Github/DevKit /home/eric/Documents/Github/DevKit /home/eric/Documents/Github/DevKit/build /home/eric/Documents/Github/DevKit/build /home/eric/Documents/Github/DevKit/build/CMakeFiles/alice-devkit.dir/DependInfo.cmake --color=
Dependee "/home/eric/Documents/Github/DevKit/build/CMakeFiles/alice-devkit.dir/DependInfo.cmake" is newer than depender "/home/eric/Documents/Github/DevKit/build/CMakeFiles/alice-devkit.dir/depend.internal".
Dependee "/home/eric/Documents/Github/DevKit/build/CMakeFiles/CMakeDirectoryInformation.cmake" is newer than depender "/home/eric/Documents/Github/DevKit/build/CMakeFiles/alice-devkit.dir/depend.internal".
Scanning dependencies of target alice-devkit
make[2]: Leaving directory '/home/eric/Documents/Github/DevKit/build'
make -f CMakeFiles/alice-devkit.dir/build.make CMakeFiles/alice-devkit.dir/build
make[2]: Entering directory '/home/eric/Documents/Github/DevKit/build'
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 1
[ 14%] Building C object CMakeFiles/alice-devkit.dir/deps/http-parser/http_parser.c.o
/usr/bin/cc   -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/deps/http-parser/http_parser.c.o   -c /home/eric/Documents/Github/DevKit/deps/http-parser/http_parser.c
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 2
[ 28%] Building CXX object CMakeFiles/alice-devkit.dir/src/http_connection.cpp.o
/usr/bin/c++    -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/src/http_connection.cpp.o -c /home/eric/Documents/Github/DevKit/src/http_connection.cpp
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 3
[ 42%] Building CXX object CMakeFiles/alice-devkit.dir/src/http_mime_type.cpp.o
/usr/bin/c++    -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/src/http_mime_type.cpp.o -c /home/eric/Documents/Github/DevKit/src/http_mime_type.cpp
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 4
[ 57%] Building CXX object CMakeFiles/alice-devkit.dir/src/http_reply.cpp.o
/usr/bin/c++    -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/src/http_reply.cpp.o -c /home/eric/Documents/Github/DevKit/src/http_reply.cpp
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 5
[ 71%] Building CXX object CMakeFiles/alice-devkit.dir/src/json.cpp.o
/usr/bin/c++    -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/src/json.cpp.o -c /home/eric/Documents/Github/DevKit/src/json.cpp
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 6
[ 85%] Building CXX object CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o
/usr/bin/c++    -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o -c /home/eric/Documents/Github/DevKit/src/devkit_http.cpp
/usr/bin/cmake -E cmake_progress_report /home/eric/Documents/Github/DevKit/build/CMakeFiles 7
[100%] Building CXX object CMakeFiles/alice-devkit.dir/src/devkit.cpp.o
/usr/bin/c++    -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable -I/home/eric/Documents/Github/Alice/src -I/home/eric/Documents/Github/DevKit/src -I/home/eric/Documents/Github/DevKit/deps/http-parser    -o CMakeFiles/alice-devkit.dir/src/devkit.cpp.o -c /home/eric/Documents/Github/DevKit/src/devkit.cpp
Linking CXX executable alice-devkit
/usr/bin/cmake -E cmake_link_script CMakeFiles/alice-devkit.dir/link.txt --verbose=1
/usr/bin/c++   -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable    CMakeFiles/alice-devkit.dir/deps/http-parser/http_parser.c.o CMakeFiles/alice-devkit.dir/src/http_connection.cpp.o CMakeFiles/alice-devkit.dir/src/http_mime_type.cpp.o CMakeFiles/alice-devkit.dir/src/http_reply.cpp.o CMakeFiles/alice-devkit.dir/src/json.cpp.o CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o CMakeFiles/alice-devkit.dir/src/devkit.cpp.o  -o alice-devkit -rdynamic -lboost_system -lprotobuf -lpthread 
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `dota::http_request_handler_devkit::methodEntity(std::string, unsigned int)::{lambda(dota::devkit_session&)#1}::operator()(dota::devkit_session&) const [clone .isra.974]':
devkit_http.cpp:(.text+0x680b): undefined reference to `dota::parser::getEntities()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodEntities(unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodEntities(unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x7069): undefined reference to `dota::parser::getEntities()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodOpen(std::string, unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodOpen(std::string, unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x73b0): undefined reference to `dota::parser::~parser()'
devkit_http.cpp:(.text+0x75b1): undefined reference to `vtable for dota::dem_stream_file'
devkit_http.cpp:(.text+0x771b): undefined reference to `dota::parser::parser(dota::settings, dota::dem_stream*)'
devkit_http.cpp:(.text+0x7760): undefined reference to `dota::parser::open(std::string)'
devkit_http.cpp:(.text+0x7881): undefined reference to `dota::parser::getHandler()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodClose(unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodClose(unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x7e7f): undefined reference to `dota::parser::~parser()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodParse(std::string, unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodParse(std::string, unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x7f75): undefined reference to `dota::parser::read()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodStringtables(unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodStringtables(unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x8055): undefined reference to `dota::parser::getStringtables()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodSend(unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodSend(unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x8748): undefined reference to `dota::parser::getSendtables()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `std::_Function_handler<void (), std::future<decltype ({parm#1}((*this).t))> dota::monitor<dota::devkit_session>::operator()<dota::http_request_handler_devkit::methodRecv(unsigned int)::{lambda(dota::devkit_session&)#1}>(dota::http_request_handler_devkit::methodRecv(unsigned int)::{lambda(dota::devkit_session&)#1}) const::{lambda()#1}>::_M_invoke(std::_Any_data const&)':
devkit_http.cpp:(.text+0x8f98): undefined reference to `dota::parser::getFlattables()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `dota::devkit_session::handlePlayer(dota::cbObject<dota::entity*, unsigned int>*)':
devkit_http.cpp:(.text._ZN4dota14devkit_session12handlePlayerEPNS_8cbObjectIPNS_6entityEjEE[_ZN4dota14devkit_session12handlePlayerEPNS_8cbObjectIPNS_6entityEjEE]+0x190): undefined reference to `dota::parser::getEntities()'
CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o: In function `void dota::delegate<void, dota::cbObject<unsigned int, unsigned int>*>::callFwd<dota::devkit_session, &dota::devkit_session::handleReady>(void*, dota::cbObject<unsigned int, unsigned int>*)':
devkit_http.cpp:(.text._ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_[_ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_]+0x46): undefined reference to `dota::parser::getEntityIdFor(std::string)'
devkit_http.cpp:(.text._ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_[_ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_]+0x52): undefined reference to `dota::parser::getHandler()'
devkit_http.cpp:(.text._ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_[_ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_]+0x100): undefined reference to `dota::parser::getEntityIdFor(std::string)'
devkit_http.cpp:(.text._ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_[_ZN4dota8delegateIvIPNS_8cbObjectIjjEEEE7callFwdINS_14devkit_sessionEXadL_ZNS6_11handleReadyES3_EEEEvPvS3_]+0x10b): undefined reference to `dota::parser::getHandler()'
collect2: error: ld returned 1 exit status
CMakeFiles/alice-devkit.dir/build.make:236: recipe for target 'alice-devkit' failed
make[2]: *** [alice-devkit] Error 1
make[2]: Leaving directory '/home/eric/Documents/Github/DevKit/build'
CMakeFiles/Makefile2:60: recipe for target 'CMakeFiles/alice-devkit.dir/all' failed
make[1]: *** [CMakeFiles/alice-devkit.dir/all] Error 2
make[1]: Leaving directory '/home/eric/Documents/Github/DevKit/build'
Makefile:117: recipe for target 'all' failed
make: *** [all] Error 2
invokr commented 10 years ago

See the line -o alice-devkit -rdynamic -lboost_system -lprotobuf -lpthread, it doesnt't include alice-shared. Try adding in manualy to the cmake file.

ericp1337 commented 10 years ago

hmm, seems as if it cannot find the library. I suspect this error has something to do with it.

-- Found Alice: /home/eric/Documents/Github/Alice/build  
-- Configuring done
WARNING: Target "alice-devkit" requests linking to directory "/home/eric/Documents/Github/Alice/build".  Targets may link only to libraries.  CMake is dropping the item.
-- Generating done

Here's where I added the library to link against (I also tried adding it with other names that I thought might make it work, but same error)

TARGET_LINK_LIBRARIES ( alice-devkit alice-shared
    ${ALICE_LIBRARIES}
    ${Boost_LIBRARIES}
    protobuf
)
Linking CXX executable alice-devkit
/usr/bin/cmake -E cmake_link_script CMakeFiles/alice-devkit.dir/link.txt --verbose=1
/usr/bin/c++   -fPIC -O3 --std=c++0x -Wall -Wno-sign-compare -Wno-unused-variable    CMakeFiles/alice-devkit.dir/deps/http-parser/http_parser.c.o CMakeFiles/alice-devkit.dir/src/http_connection.cpp.o CMakeFiles/alice-devkit.dir/src/http_mime_type.cpp.o CMakeFiles/alice-devkit.dir/src/http_reply.cpp.o CMakeFiles/alice-devkit.dir/src/json.cpp.o CMakeFiles/alice-devkit.dir/src/devkit_http.cpp.o CMakeFiles/alice-devkit.dir/src/devkit.cpp.o  -o alice-devkit -rdynamic -llibalice-core-shared -lboost_system -lprotobuf -lpthread 
/usr/bin/ld: cannot find -llibalice-core-shared
collect2: error: ld returned 1 exit status
CMakeFiles/alice-devkit.dir/build.make:236: recipe for target 'alice-devkit' failed
invokr commented 10 years ago

My bad for not noticing you define ALICE_LIBRARIES in the cmake call, don't do that, ever. Set ALICE_ROOT to something like /usr/local where you installed alice. You may also remove ALICE_LIBRARIES and instead add your build directory to the linker search path.

ericp1337 commented 10 years ago

Hooray! It works now. Thank you for all the help. But for some reason if I run it from the install path it complains about to shared lib. But if I run the version from the build dir it works. But at least i've got it working now.

ericp1337 commented 10 years ago

And now unfortunately it seems when opening a replay I get an exception. screenshot from 2014-08-29 17 47 45

invokr commented 10 years ago

Don't click the open button right away; click the carret next to it first. That'll show you a list of files to open from the directory you supplied when starting the application.