Witam. Ten błąd jest już drugi z kolei. Poprzednio wyskakiwalo mi coś, co na innych forach znalazłem pod hasłem “linker error”, z braku umiejętności zarówno w programowaniu jak i w użytkowaniu linux’a zainstalowalem pakiet libboost-all. I teraz wyskakuje mi inny błąd
Chciałem zaznaczyć, że nie jestem programistą, chce tylko skompilować źródła. Nic w systemie namieszane nie jest, świeżutki Debian sqeeze tuż po instalacji na vbox’ie zresztą. Zrobiłem tylko to co kazali w readme + instalacja libboost-all. Ktoś może wie o co chodzi?
xxx@xxx:~/0.2.9.r89$ make
g++ -I. -I/usr/include/libxml2 -I /usr/include/lua5.1 -D_THREAD_SAFE -D_REENTRANT -D __NO_HOMEDIR_CONF__ -D __ENABLE_SERVER_DIAGNOSTIC__ -D __USE_SQLITE__ -D __USE_MYSQL__ -Werror -Wall -O2 -c admin.cpp
In file included from /usr/include/boost/asio/detail/impl/throw_error.ipp:21,
from /usr/include/boost/asio/detail/throw_error.hpp:52,
from /usr/include/boost/asio/detail/impl/posix_mutex.ipp:23,
from /usr/include/boost/asio/detail/posix_mutex.hpp:73,
from /usr/include/boost/asio/detail/mutex.hpp:25,
from /usr/include/boost/asio/detail/service_registry.hpp:20,
from /usr/include/boost/asio/impl/io_service.hpp:18,
from /usr/include/boost/asio/io_service.hpp:684,
from /usr/include/boost/asio/basic_io_object.hpp:20,
from /usr/include/boost/asio/basic_socket.hpp:19,
from /usr/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/include/boost/asio.hpp:20,
from connection.h:25,
from admin.cpp:24:
/usr/include/boost/system/system_error.hpp:22: error: expected initializer before ‘:’ token
In file included from /usr/include/boost/asio/impl/io_service.hpp:18,
from /usr/include/boost/asio/io_service.hpp:684,
from /usr/include/boost/asio/basic_io_object.hpp:20,
from /usr/include/boost/asio/basic_socket.hpp:19,
from /usr/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/include/boost/asio.hpp:20,
from connection.h:25,
from admin.cpp:24:
/usr/include/boost/asio/detail/service_registry.hpp:38: error: expected ‘}’ before end of line
/usr/include/boost/asio/detail/service_registry.hpp:38: error: expected ‘}’ before end of line
/usr/include/boost/asio/detail/service_registry.hpp:38: error: expected declaration before end of line
make: *** [admin.o] Error 1
README źródeł:
Debian \ Ubuntu
Launch a terminal, and paste in this command:
sudo apt-get install subversion autoconf automake make g++ libxml2 libxml2-dev libxm$
wget http://heanet.dl.sourceforge.net/sourceforge/asio/boost_asio_1_4_7.tar.gz
tar -xf boost_asio_1_4_7.tar.gz
sudo cp -ar boost_asio_1_4_7/boost/* /usr/include/boost/
sudo g++ boost_asio_1_4_7/libs/system/src/error_code.cpp -c -o /usr/lib/libboost_sys$
sudo: command not found
If you're running Debian it's possible that you don't
have sudo, if that's the case then you can run 'su' and
you will have root access. Then execute the commands
without 'sudo' in the beginning.
Download sourcecode
Launch a terminal, and paste in this command:
svn co svn://svn.otland.net/public/forgottenserver/tags/0.2.9
Compiling
Launch a terminal, and type this command:
cd 0.2.9/ && make
Linker eror
If you receive a linker error saying something with 'libboost',
try pasting the following commands to terminal and then move back
to compiling again:
ln /usr/lib/libboost_regex-mt.so /usr/lib/libboost_regex.so && ln /usr/lib/libboost_regex-mt$
Dzięki za odp. Na koncie root’a niesety wyskakuje ten sam dziwny błąd. Czy to przypadkiem kompilator nie mówi że znalazł jakieś błędy składniowe w tych wszystkich pliczkach?
root@xxx:/home/lisior/0.2.9.r89# make
g++ -I. -I/usr/include/libxml2 -I /usr/include/lua5.1 -D_THREAD_SAFE -D_REENTRANT -D __NO_HOMEDIR_CONF__ -D __ENABLE_SERVER_DIAGNOSTIC__ -D __USE_SQLITE__ -D __USE_MYSQL__ -Werror -Wall -O2 -c admin.cpp
In file included from /usr/include/boost/asio/detail/impl/throw_error.ipp:21,
from /usr/include/boost/asio/detail/throw_error.hpp:52,
from /usr/include/boost/asio/detail/impl/posix_mutex.ipp:23,
from /usr/include/boost/asio/detail/posix_mutex.hpp:73,
from /usr/include/boost/asio/detail/mutex.hpp:25,
from /usr/include/boost/asio/detail/service_registry.hpp:20,
from /usr/include/boost/asio/impl/io_service.hpp:18,
from /usr/include/boost/asio/io_service.hpp:684,
from /usr/include/boost/asio/basic_io_object.hpp:20,
from /usr/include/boost/asio/basic_socket.hpp:19,
from /usr/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/include/boost/asio.hpp:20,
from connection.h:25,
from admin.cpp:24:
/usr/include/boost/system/system_error.hpp:22: error: expected initializer before ‘:’ token
In file included from /usr/include/boost/asio/impl/io_service.hpp:18,
from /usr/include/boost/asio/io_service.hpp:684,
from /usr/include/boost/asio/basic_io_object.hpp:20,
from /usr/include/boost/asio/basic_socket.hpp:19,
from /usr/include/boost/asio/basic_datagram_socket.hpp:20,
from /usr/include/boost/asio.hpp:20,
from connection.h:25,
from admin.cpp:24:
/usr/include/boost/asio/detail/service_registry.hpp:38: error: expected ‘}’ before end of line
/usr/include/boost/asio/detail/service_registry.hpp:38: error: expected ‘}’ before end of line
/usr/include/boost/asio/detail/service_registry.hpp:38: error: expected declaration before end of line
make: *** [admin.o] Error 1
Na to wygląda, że przed końcem linii jest niepotrzebna klamra ’ } ’ - szczerze nie wiem co z tym zrobić. Być może błędy w kodzie. Co to w ogóle za program i do czego tego potrzebujesz? Może są gdzieś paczki *.deb dla Debiana.
Komunikat sugeruje błąd składniowy, ale wcale nie musi być to błąd składniowy. Może to kwestia złej wersji Boost. Przede wszystkim: co kompilujesz i czy na pewno nie ma gotowej paczki?
Ostatecznie mógłbyś zajrzeć do tych plików i zobaczyć na co tak narzeka kompilator.
Na pewno nie ma gotowej paczki, zresztą skompilować się to powinno w jakiś sposób dać …
No nie wiem, w readme kazali mi instalować 1.42
Jutro z zapałem poszperam po pliczkach, może rzeczywiście nie ma domkniętej jakiejś klamry.
– Dodane 26.01.2011 (Śr) 23:15 –
Rzeczywiście, nie kazali 1.42 tylko 1.47. Musiałem sie zagapići zainstalować je bezmyślnie. Spróbujemy wywalić 1.42 a jak nie pomoże to reinstalne system i zobaczymy
Kodu nie kompiluje się na uprawnieniach roota ze względów bezpieczeństwa, zresztą takie prawa do kompilacji kodu nie, a przynajmniej nie powinny być wymagane. Kolega marcin miał raczej na myśli to co masz napisane w readme.
dlatego wspomniał o sudo. Do kompilacji kodu potrzebne są wyżej wymienione pakiety.
EDIT: Kolega Glothriel co prawda usunął post ale zdążyłem go przeczytać.
Odpowiedź: Sprawdź w repozytorium experimetal czy jest nowsza wersja albo poszukaj na debian.org paczki z interesującą Cię wersją.
Dzięki Roobal’u. Napisałem w pierwszym poście, ze zrobiłem to, co mi kazali w readme, czyli zainstalowałem wszystkie pakiety.
Problemem chyba jest to, że Boost asio 1.47 jest częścią libboost 1.45, a Squeeze ma w repozytorium libboost 1.42, czeka mnie więc najprawdopodobniej ręczna kompilacja boosta 1.45.
@edit, dobra, szukam
@edit2 W experimental nic, w unstable 1.42. Czyli kompilacja jednak.
Wg. mnie, to includujesz jakiś własny plik nagłówkowy tuż przed includem pliku nagłówkowego Boosta, a zapomniałeś we własnym pliku gdzieś wstawić średnika.