Ошибки компиляции примера из книги (advanced linux programming)

Модератор: Модераторы разделов

GTHack
Сообщения: 4

Ошибки компиляции примера из книги

Сообщение GTHack »

Компилю самплы из advanced-linux-programming
вот они http://www.advancedlinuxprogramming.com/ALP-listings.tar.gz (кстати и книжка на этом же сайте выложена - правда english - зато оригинал)
конкретно chapter-5/socket-client.c и socket-server.c

получаю такую ошибку
g++ socket-client.c
socket-client.c: In function `int main(int, char* const*)':
socket-client.c:38: cannot convert `sockaddr_un*' to `const sockaddr*' for
argument `2' to `int connect(int, const sockaddr*, unsigned int)'


в socket-server.c та же беда

помогите разобраться плс в чём трабла ? может компилю неправильно ?
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Ошибки компиляции примера из книги

Сообщение BlackStar »

Откуда взялся g++ ?
LightLang Team
Спасибо сказали:
Sleeping Daemon
Сообщения: 1450

Re: Ошибки компиляции примера из книги

Сообщение Sleeping Daemon »

GTHack писал(а):
21.06.2007 12:33
Компилю самплы из advanced-linux-programming
вот они http://www.advancedlinuxprogramming.com/ALP-listings.tar.gz (кстати и книжка на этом же сайте выложена - правда english - зато оригинал)
конкретно chapter-5/socket-client.c и socket-server.c

получаю такую ошибку
g++ socket-client.c
socket-client.c: In function `int main(int, char* const*)':
socket-client.c:38: cannot convert `sockaddr_un*' to `const sockaddr*' for
argument `2' to `int connect(int, const sockaddr*, unsigned int)'


в socket-server.c та же беда

помогите разобраться плс в чём трабла ? может компилю неправильно ?

А почему Вы программу на C компилите g++ ?
Спасибо сказали:
GTHack
Сообщения: 4

Re: Ошибки компиляции примера из книги

Сообщение GTHack »

сенк за наводочку !

gcc откомпилировал !

правда с предупреждениями

# gcc socket-server.c
socket-server.c: In function `main':
socket-server.c:53: warning: passing arg 2 of `bind' from incompatible pointer type
socket-server.c:65: warning: passing arg 2 of `accept' from incompatible pointer type

# gcc socket-client.c
socket-client.c: In function `main':
socket-client.c:38: warning: passing arg 2 of `connect' from incompatible pointer type

P.s.
компилировал g++ потому что в этой же книге в главе про компиляцию написано, что им надо компилять ... (ну либо я неправильно перевёл)
Спасибо сказали:
GTHack
Сообщения: 4

Re: Ошибки компиляции примера из книги

Сообщение GTHack »

кстати в socket-server.c ошибочку обнаружил - перед проверкой на выход text очищается - т.е. по quit сервер нифига не выйдет
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: Ошибки компиляции примера из книги

Сообщение edoc_modnar »

GTHack писал(а):
21.06.2007 13:00
P.s.
компилировал g++ потому что в этой же книге в главе про компиляцию написано, что им надо компилять ... (ну либо я неправильно перевёл)


1.2.1 Compiling a Single Source File

The name of the C compiler is gcc. To compile a C source file, you use the -c
option. So, for example, entering this at the command prompt compiles the main.c
source file:
% gcc -c main.c

The resulting object file is named main.o.
The C++ compiler is called g++. Its operation is very similar to gcc; compiling
reciprocal.cpp is accomplished by entering the following:
% g++ -c reciprocal.cpp
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали:
Slimy
Сообщения: 1689
ОС: openSuSE 11.2 GM (GеMор едишн)

Re: Ошибки компиляции примера из книги

Сообщение Slimy »

простите за небольшой оффтопик.
const char* const socket_name = argv[1]

Что это за тип данных? Никогда с таким не сталкивался. И зачем передавать имя сокета через аргумент командной строки?В чем смысл вообще этого имени?
Если уже ничего не помогает - прочти инструкцию.
sysinstall - гадость :)
ASUS A6q00Vm Pentium-M 1.7 GHz, 2Gb RAM, 160Gb HDD,
GeForce Go 7300 64Mb video
Спасибо сказали:
Аватара пользователя
BlackStar
Сообщения: 1338
Статус: We are all Kosh
ОС: Fedora 10

Re: Ошибки компиляции примера из книги

Сообщение BlackStar »

Что это за тип данных?

Указатель на массив символов, типа строка
И зачем передавать имя сокета через аргумент командной строки?В чем смысл вообще этого имени?

В данном случае речь идёт о сокетах Unix (PF_LOCAL, PF_UNIX), и под именем подразумевается имя файла.
LightLang Team
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Ошибки компиляции примера из книги

Сообщение v04bvs »

Slimy писал(а):
21.06.2007 17:17
const char* const socket_name = argv[1]

Что это за тип данных?

Константный указатель на константный char.
Примеры:

Код: Выделить всё

const char* p1; /* указатель на константный char */
*p1 = 1; /* нельзя */
p1 = "abc"; /* можно, меняется сам указатель */

char c;
char* const p2 = &c; /* константный указатель на char */
*p2 = 2; /* можно */
p2 = NULL; /* нельзя */

const char* const p3 = &c;
*p3 = 4; /* нельзя */
p3 = NULL; /* нельзя */
Спасибо сказали: