Hello,
i'm in a 64bit Arch environment I get the following error on making realmd. All dependent packages should be installed.
I've got mysql-5.1.46 and libmysqlclient-5.1.46.
Error:
Making all in realmd
make[3]: Entering directory `/home/*****/mangos/src/mangos-build/objdir/src/realmd'
CXX AuthSocket.o
CXX Main.o
CXX RealmList.o
CXXLD mangos-realmd
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::~DatabaseMysql()':
DatabaseMysql.cpp:(.text+0x228): undefined reference to `mysql_close'
DatabaseMysql.cpp:(.text+0x244): undefined reference to `mysql_server_end'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::_TransactionCmd(char const*)':
DatabaseMysql.cpp:(.text+0x2f4): undefined reference to `mysql_query'
DatabaseMysql.cpp:(.text+0x387): undefined reference to `mysql_error'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::DirectExecute(char const*)':
DatabaseMysql.cpp:(.text+0x517): undefined reference to `mysql_query'
DatabaseMysql.cpp:(.text+0x542): undefined reference to `mysql_error'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::_Query(char const*, st_mysql_res**, st_mysql_field**, unsigned long*, unsigned int*)':
DatabaseMysql.cpp:(.text+0x71a): undefined reference to `mysql_query'
DatabaseMysql.cpp:(.text+0x745): undefined reference to `mysql_error'
DatabaseMysql.cpp:(.text+0x87a): undefined reference to `mysql_store_result'
DatabaseMysql.cpp:(.text+0x88a): undefined reference to `mysql_affected_rows'
DatabaseMysql.cpp:(.text+0x89a): undefined reference to `mysql_field_count'
DatabaseMysql.cpp:(.text+0x8d5): undefined reference to `mysql_fetch_fields'
DatabaseMysql.cpp:(.text+0x911): undefined reference to `mysql_free_result'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::Initialize(char const*)':
DatabaseMysql.cpp:(.text+0xa2e): undefined reference to `mysql_init'
DatabaseMysql.cpp:(.text+0xc12): undefined reference to `mysql_options'
DatabaseMysql.cpp:(.text+0xc9e): undefined reference to `mysql_real_connect'
DatabaseMysql.cpp:(.text+0xd44): undefined reference to `mysql_get_client_info'
DatabaseMysql.cpp:(.text+0xdb3): undefined reference to `mysql_get_server_info'
DatabaseMysql.cpp:(.text+0xe27): undefined reference to `mysql_autocommit'
DatabaseMysql.cpp:(.text+0xfdd): undefined reference to `mysql_options'
DatabaseMysql.cpp:(.text+0x1075): undefined reference to `mysql_error'
DatabaseMysql.cpp:(.text+0x10f0): undefined reference to `mysql_close'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::DatabaseMysql()':
DatabaseMysql.cpp:(.text+0x168a): undefined reference to `mysql_server_init'
DatabaseMysql.cpp:(.text+0x168f): undefined reference to `mysql_thread_safe'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::escape_string(char*, char const*, unsigned long)':
DatabaseMysql.cpp:(.text+0x1a6): undefined reference to `mysql_real_escape_string'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::ThreadEnd()':
DatabaseMysql.cpp:(.text+0x2c1): undefined reference to `mysql_thread_end'
../shared/Database/libmangosdatabase.a(DatabaseMysql.o): In function `DatabaseMysql::ThreadStart()':
DatabaseMysql.cpp:(.text+0x2d1): undefined reference to `mysql_thread_init'
../shared/Database/libmangosdatabase.a(QueryResultMysql.o): In function `QueryResultMysql::EndQuery()':
QueryResultMysql.cpp:(.text+0x58): undefined reference to `mysql_free_result'
../shared/Database/libmangosdatabase.a(QueryResultMysql.o): In function `QueryResultMysql::NextRow()':
QueryResultMysql.cpp:(.text+0x83): undefined reference to `mysql_fetch_row'
../shared/Database/libmangosdatabase.a(SqlDelayThread.o): In function `SqlDelayThread::run()':
SqlDelayThread.cpp:(.text+0x30): undefined reference to `mysql_thread_init'
SqlDelayThread.cpp:(.text+0x127): undefined reference to `mysql_thread_end'
collect2: ld returned 1 exit status
To compile MaNGOS I use the following steps after pulling from git and aplying the sd2 patch:
autoreconf --install --force
mkdir objdir
cd objdir
../configure --prefix=/home/****/mserver --sysconfdir=/home/****/mserver/etc --enable-cli --enable-ra --datadir=/home/****/mserver/data
# for dual core support on make, make install add "-j2"
make -j2
The conf log says:
checking whether to build/link POSTGRESQL... no
checking whether to build/link MYSQL... yes
checking for mysql_config... /usr/bin/mysql_config
configure: WARNING: Your mysql libs contains -Wl,--as-needed, this is not good, problem fixed in more recent mysql versions
...
checking mysql.h usability... yes
checking mysql.h presence... yes
checking for mysql.h... yes
checking mysql/mysql.h usability... yes
checking mysql/mysql.h presence... yes
checking for mysql/mysql.h... yes
Output of mysql-conf is:
Usage: /usr/bin/mysql_config [OPTIONS]
Options:
--cflags [-I/usr/include/mysql -fPIC -pipe -fno-strict-aliasing -DUNIV_LINUX -DUNIV_LINUX]
--include [-I/usr/include/mysql]
--libs [-Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm]
--libs_r [-Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -L/usr/lib/mysql -lmysqlclient_r -lz -lpthread -lcrypt -lnsl -lm -lpthread]
--plugindir [/usr/lib/mysql/plugin]
--socket [/var/run/mysqld/mysqld.sock]
--port [0]
--version [5.1.46]
--libmysqld-libs [-Wl,--hash-style=gnu -Wl,--as-needed -rdynamic -L/usr/lib/mysql -lmysqld -ldl -lz -lpthread -lcrypt -lnsl -lm -lpthread -lwrap -lrt]
Thanks for helping me
EDIT: SOLVED the problem by editing /src/shared/DatabaseMysql.h AND /src/shared/QueryResultMysql.h in the following way.
Replace:
#ifdef WIN32
#include <winsock2.h>
#include <mysql/mysql.h>
#else
#include <mysql.h>
#endif
with:
#ifdef WIN32
#include <winsock2.h>
#include <mysql/mysql.h>
#else
#include <mysql/mysql.h>
#endif