Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: g++ - проблемы новечка :(  (Прочитано 6243 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Камень

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
g++ - проблемы новечка :(
« : 03 Января 2008, 12:19:30 »
Добрый день, с наступившим всех вас :)

у меня проблема :(
psokolov@psokolov-laptop:~/Desktop/Development/C++/SonyEricsson$ make
g++ -c Device.cpp
Device.cpp:2:22: error: systypes.h: No such file or directory
Device.cpp:3:21: error: sysstat.h: No such file or directory
Device.cpp:4:16: error: io.h: No such file or directory
Device.cpp: In destructor ‘Device::~Device()':
Device.cpp:16: ошибка: нет декларации ‘close' в этой области видимости
Device.cpp: In member function ‘bool Device::Connect(char*)':
Device.cpp:24: ошибка: aggregate ‘termios t' has incomplete type and cannot be defined
Device.cpp:25: ошибка: нет декларации ‘memset' в этой области видимости
Device.cpp:26: ошибка: нет декларации ‘IGNBRK' в этой области видимости
Device.cpp:26: ошибка: нет декларации ‘IXOFF' в этой области видимости
Device.cpp:27: ошибка: нет декларации ‘CLOCAL' в этой области видимости
Device.cpp:27: ошибка: нет декларации ‘CREAD' в этой области видимости
Device.cpp:27: ошибка: нет декларации ‘CS8' в этой области видимости
Device.cpp:28: ошибка: нет декларации ‘B115200' в этой области видимости
Device.cpp:28: ошибка: нет декларации ‘cfsetispeed' в этой области видимости
Device.cpp:29: ошибка: нет декларации ‘cfsetospeed' в этой области видимости
Device.cpp:30: ошибка: нет декларации ‘TCSAFLUSH' в этой области видимости
Device.cpp:30: ошибка: нет декларации ‘tcsetattr' в этой области видимости
make: *** [Device.o] Ошибка 1
psokolov@psokolov-laptop:~/Desktop/Development/C++/SonyEricsson$


а исходник Device

#include <fcntl.h>
#include <systypes.h>
#include <sysstat.h>
#include <io.h>
#include <malloc.h>

#include "Device.h"

Device::Device()
{
Handle = 0;
}

Device::~Device()
{
if (Handle) close(Handle);
}

bool Device::Connect(char *device_name)
{
Handle = open(device_name, O_RDWR | O_NOCTTY);
if (Handle > 0)
{
struct termios t;
memset(&t, 0, sizeof(t));
t.c_iflag |= (IGNBRK | IXOFF);
t.c_cflag |= (CLOCAL | CREAD | CS8);
cfsetispeed(&t, B115200);
cfsetospeed(&t, B115200);
tcsetattr(Handle, TCSAFLUSH, &t);
}
return Handle != 0;
}

что и как надо сделать чтоб видны были open close и другие макросы??
только щас сел за g++ :) ещё не освоился :(

Thread

  • Гость
Re: g++ - проблемы новечка :(
« Ответ #1 : 03 Января 2008, 12:23:25 »
А на чём программа должна работать?

Оффлайн Камень

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #2 : 03 Января 2008, 13:19:17 »
Kernel Linux 2.6.22-14-generic
Ubuntu 7.10
вот маке фаил :)
phone: main.o Device.o
g++ main.o Device.o -o phone
strip -s phone

Device.o: Device.cpp Device.h
g++ -c Device.cpp

main.o: main.cpp Device.h
g++ -c main.cpp

clean:
rm -f phone main.o Device.o

install:
cp phone /usr/local/bin/phone

uninstall:
rm -f /usr/local/bin/phone

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #3 : 03 Января 2008, 13:51:00 »
а там разве не sys/types.h и sys/stat.h?
« Последнее редактирование: 03 Января 2008, 13:53:54 от 12d3 »

Оффлайн Камень

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #4 : 03 Января 2008, 19:00:20 »
эту ошибку я исправил...
меня досихпор волновала эта
Device.cpp:15: ошибка: нет декларации ‘close' в этой области видимостиошибка :(
и так же эта
Device.cpp:23: ошибка: aggregate ‘termios t' has incomplete type and cannot be defined:(
нал пойду дальше ковыряться в "помойке" :(

Оффлайн Камень

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #5 : 04 Января 2008, 13:17:48 »
половину ошибок я справил...
но всёравно не могу исправить
user@laptop:~$ make
g++ -c Device.cpp
Device.cpp: In destructor ‘Device::~Device()’:
Device.cpp:19: ошибка: нет декларации ‘close’ в этой области видимости
Device.cpp: In member function ‘bool Device::Connect(char*)’:
Device.cpp:37: ошибка: нет декларации ‘close’ в этой области видимости
Device.cpp: In member function ‘int Device::sendAT(char*)’:
Device.cpp:49: ошибка: нет декларации ‘write’ в этой области видимости
Device.cpp:63: ошибка: нет декларации ‘read’ в этой области видимости
make: *** [Device.o] Ошибка 1
user@laptop:~$
когда посмотрел содержимое fcntl.h, то ужаснулся...
в нутри неё есть описание только open, а read, write, close нислова :(
/* Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006
        Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, write to the Free
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307 USA.  */

/*
 *      POSIX Standard: 6.5 File Control Operations     <fcntl.h>
 */

#ifndef _FCNTL_H
#define _FCNTL_H        1

#include <features.h>

/* This must be early so <bits/fcntl.h> can define types winningly.  */
__BEGIN_DECLS

/* Get the definitions of O_*, F_*, FD_*: all the
   numbers and flag bits for `open', `fcntl', et al.  */
#include <bits/fcntl.h>

/* For XPG all symbols from <sys/stat.h> should also be available.  */
#ifdef __USE_XOPEN
# include <sys/stat.h>
#endif

#ifdef  __USE_MISC
# ifndef R_OK                   /* Verbatim from <unistd.h>.  Ugh.  */
/* Values for the second argument to access.
   These may be OR'd together.  */
#  define R_OK  4               /* Test for read permission.  */
#  define W_OK  2               /* Test for write permission.  */
#  define X_OK  1               /* Test for execute permission.  */
#  define F_OK  0               /* Test for existence.  */
# endif
#endif /* Use misc.  */

/* XPG wants the following symbols.  */
#ifdef __USE_XOPEN              /* <stdio.h> has the same definitions.  */
# define SEEK_SET       0       /* Seek from beginning of file.  */
# define SEEK_CUR       1       /* Seek from current position.  */
# define SEEK_END       2       /* Seek from end of file.  */
#endif  /* XPG */

#ifdef __USE_ATFILE
# define AT_FDCWD               -100    /* Special value used to indicate
                                           the *at functions should use the
                                           current working directory. */
# define AT_SYMLINK_NOFOLLOW    0x100   /* Do not follow symbolic links.  */
# define AT_REMOVEDIR           0x200   /* Remove directory instead of
                                           unlinking file.  */
# define AT_SYMLINK_FOLLOW      0x400   /* Follow symbolic links.  */
# define AT_EACCESS             0x200   /* Test access permitted for
                                           effective IDs, not real IDs.  */
#endif

/* Do the file control operation described by CMD on FD.
   The remaining arguments are interpreted depending on CMD.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
extern int fcntl (int __fd, int __cmd, ...);

/* Open FILE and return a new file descriptor for it, or -1 on error.
   OFLAG determines the type of access used.  If O_CREAT is on OFLAG,
   the third argument is taken as a `mode_t', the mode of the created file.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
#ifndef __USE_FILE_OFFSET64
extern int open (__const char *__file, int __oflag, ...) __nonnull ((1));
#else
# ifdef __REDIRECT
extern int __REDIRECT (open, (__const char *__file, int __oflag, ...), open64)
     __nonnull ((1));
# else
#  define open open64
# endif
#endif
#ifdef __USE_LARGEFILE64
extern int open64 (__const char *__file, int __oflag, ...) __nonnull ((1));
#endif

#ifdef __USE_ATFILE
/* Similar to `open' but a relative path name is interpreted relative to
   the directory for which FD is a descriptor.

   NOTE: some other `openat' implementation support additional functionality
   through this interface, especially using the O_XATTR flag.  This is not
   yet supported here.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
# ifndef __USE_FILE_OFFSET64
extern int openat (int __fd, __const char *__file, int __oflag, ...)
     __nonnull ((2));
# else
#  ifdef __REDIRECT
extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag,
                                ...), openat64) __nonnull ((2));
#  else
#   define openat openat64
#  endif
# endif

extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
     __nonnull ((2));
#endif

/* Create and open FILE, with mode MODE.  This takes an `int' MODE
   argument because that is what `mode_t' will be widened to.

   This function is a cancellation point and therefore not marked with
   __THROW.  */
#ifndef __USE_FILE_OFFSET64
extern int creat (__const char *__file, __mode_t __mode) __nonnull ((1));
#else
# ifdef __REDIRECT
extern int __REDIRECT (creat, (__const char *__file, __mode_t __mode),
                       creat64) __nonnull ((1));
# else
#  define creat creat64
# endif
#endif
#ifdef __USE_LARGEFILE64
extern int creat64 (__const char *__file, __mode_t __mode) __nonnull ((1));
#endif

#if !defined F_LOCK && (defined __USE_MISC || (defined __USE_XOPEN_EXTENDED \
                                               && !defined __USE_POSIX))
/* NOTE: These declarations also appear in <unistd.h>; be sure to keep both
   files consistent.  Some systems have them there and some here, and some
   software depends on the macros being defined without including both.  */

/* `lockf' is a simpler interface to the locking facilities of `fcntl'.
   LEN is always relative to the current file position.
   The CMD argument is one of the following.  */

# define F_ULOCK 0      /* Unlock a previously locked region.  */
# define F_LOCK  1      /* Lock a region for exclusive use.  */
# define F_TLOCK 2      /* Test and lock a region for exclusive use.  */
# define F_TEST  3      /* Test a region for other processes locks.  */

# ifndef __USE_FILE_OFFSET64
extern int lockf (int __fd, int __cmd, __off_t __len);
# else
# ifdef __REDIRECT
extern int __REDIRECT (lockf, (int __fd, int __cmd, __off64_t __len), lockf64);
# else
#  define lockf lockf64
# endif
# endif
# ifdef __USE_LARGEFILE64
extern int lockf64 (int __fd, int __cmd, __off64_t __len);
# endif
#endif

#ifdef __USE_XOPEN2K
/* Advice the system about the expected behaviour of the application with
   respect to the file associated with FD.  */
# ifndef __USE_FILE_OFFSET64
extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
                          int __advise) __THROW;
# else
# ifdef __REDIRECT_NTH
extern int __REDIRECT_NTH (posix_fadvise, (int __fd, __off64_t __offset,
                                           __off64_t __len, int __advise),
                           posix_fadvise64);
# else
#  define posix_fadvise posix_fadvise64
# endif
# endif
# ifdef __USE_LARGEFILE64
extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
                            int __advise) __THROW;
# endif


/* Reserve storage for the data of the file associated with FD.

   This function is a possible cancellation points and therefore not
   marked with __THROW.  */
# ifndef __USE_FILE_OFFSET64
extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
# else
# ifdef __REDIRECT
extern int __REDIRECT (posix_fallocate, (int __fd, __off64_t __offset,
                                         __off64_t __len),
                       posix_fallocate64);
# else
#  define posix_fallocate posix_fallocate64
# endif
# endif
# ifdef __USE_LARGEFILE64
extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
# endif
#endif

__END_DECLS

#endif /* fcntl.h  */
что делать???!!!  :'( :-[ :buck2:

Оффлайн 12d3

  • Активист
  • *
  • Сообщений: 674
  • Ubuntu 10.04
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #6 : 04 Января 2008, 17:41:57 »
а подключи еще unistd.h

Оффлайн Камень

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #7 : 04 Января 2008, 18:15:12 »
Спасибо :)
сработало :)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #8 : 05 Января 2008, 07:26:29 »
sudo apt-get install manpages-ru manpages-dev manpages-posix manpages-posix-dev
man close

Стандартная справочная система unix-систем содержит много полезного

Thread

  • Гость
Re: g++ - проблемы новечка :(
« Ответ #9 : 05 Января 2008, 10:10:20 »
manpages-ru - зло. Могут вводить в заблуждение.

Оффлайн Камень

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Re: g++ - проблемы новечка :(
« Ответ #10 : 05 Января 2008, 19:20:04 »
приколько :)
мня порадовало :)

 

Страница сгенерирована за 0.017 секунд. Запросов: 21.