Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 11.03.2011, 17:45   #1 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question Ошибка при компиляции

Здравствуйте, пытался сегодня откомпилировать сегодня исходный код программы, а мне при компиляции выдало след ошибку:
/usr/lib/gcc/i686-linux-gnu/4.4.5/../../../../lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [ls] Error 1


Linux(ubuntu 10.10), среда разработки Anjuta...
Что это вообще такое? что сделать, чтобы откомпилировалось нормально? если нужен будет текст выложу сюда! Заранее спасибо!
sidjey вне форума   Ответить с цитированием

Старый 11.03.2011, 17:45
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Данные топики очень похожи по содержанию на вашу тему

Ошибка 691 в Win 7
Паскаль. помощь в компиляции моего кода
Что за ошибка?

Старый 11.03.2011, 22:40   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

возможно у вас нету функции void main() ?

или не объявлена _start
нужен код.
kreol вне форума   Ответить с цитированием
Старый 12.03.2011, 00:47   #3 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Цитата:
Сообщение от kreol Посмотреть сообщение
void main() ?
Нарушаете стандарт!
main должна быть int main(), и никак иначе.
Long Cat вне форума   Ответить с цитированием
Старый 13.03.2011, 13:29   #4 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от kreol Посмотреть сообщение
возможно у вас нету функции void main() ?

или не объявлена _start
нужен код.
да нет ни void main() ни int main()... но как дописать не знаю((( вот код...

Код:
#ifndef _VIEW_H
#define  _VIEW_H

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <string.h>
#include <iostream>
#include <pwd.h>
#include <grp.h>
#include <errno.h>

using namespace std;

int myView(bool l,bool r,const char* path)
{
  DIR* dir = opendir(path);
  if(!dir)
    return 1;

  struct dirent *rd;

  while((rd = readdir(dir)))
  {
    if(!strcmp(rd->d_name,".") || !strcmp(rd->d_name,".."))
    {
      continue;
    }
    struct stat entryInfo;
    char pathName[PATH_MAX+1];

    strncpy(pathName,path,PATH_MAX);
    strncat(pathName,"/",PATH_MAX);
    strncat(pathName,rd->d_name,PATH_MAX);

    if(!lstat(pathName,&entryInfo))
    {
      if(l)
      {
        switch(entryInfo.st_mode & S_IFMT)
        {
          case S_IFDIR:
          {
            cout << "d";
            break;
          }
          case S_IFIFO:
          {
            cout << "p";
            break;
          }
          case S_IFSOCK:
          {
            cout << "s";
            break;
          }
          case S_IFLNK:
          {
            cout << "l";
            break;
          }
          default:
            cout << "-";
        }

        //Владелец
        //read
        if(entryInfo.st_mode & S_IRUSR)
          cout << "r";
        else
          cout << "-";
        //write
        if(entryInfo.st_mode & S_IWUSR)
          cout << "w";
        else
          cout << "-";
        //execute
        if(entryInfo.st_mode & S_IXUSR)
          cout << "x";
        else
          cout << "-";

        //Группа
        //read
        if(entryInfo.st_mode & S_IRGRP)
          cout << "r";
        else
          cout << "-";
        //write
        if(entryInfo.st_mode & S_IWGRP)
          cout << "w";
        else
          cout << "-";
        //execute
        if(entryInfo.st_mode & S_IXGRP)
          cout << "x";
        else
          cout << "-";

        //Прочие
        //read
        if(entryInfo.st_mode & S_IROTH)
          cout << "r";
        else
          cout << "-";
        //write
        if(entryInfo.st_mode & S_IWOTH)
          cout << "w";
        else
          cout << "-";
        //execute
        if(entryInfo.st_mode & S_IXOTH)
          cout << "x";
        else
          cout << "-";

        cout << " ";
        struct passwd* pwd = getpwuid(getuid());
        struct group* grp = getgrgid(pwd->pw_gid);
        cout << " " << grp->gr_name << " " << pwd->pw_name << " ";
      }

      if(S_ISDIR(entryInfo.st_mode))
      {
        cout << rd->d_name << endl;
        if(r)
        {
          myView(l,r,pathName);
        }
      }else
      if(S_ISREG(entryInfo.st_mode))
      {
        cout << rd->d_name;
      }else
      if(S_ISLNK(entryInfo.st_mode))
      {        
        char targetName[PATH_MAX+1];
        if(readlink(pathName,targetName,PATH_MAX))
        {
          cout << rd->d_name << " link: "
              << targetName;
        }
      }else
      if(S_ISSOCK(entryInfo.st_mode))
      {
        cout << rd->d_name;
      }
      cout << endl;
    }
    //Проверка для предотвращения падения стека
    else
    {
      cout << rd->d_name << " " << strerror(errno) << endl;
      exit(1);
    }
  }
  closedir(dir);
}

#endif  /* _VIEW_H */
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 14:13   #5 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Здесь только файл с реализацией некоего класса.
Это все что у вас есть?
Long Cat вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 13.03.2011, 14:29   #6 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Здесь только файл с реализацией некоего класса.
Это все что у вас есть?
да, исходник нашел в каком-то блоге, с автором связи нет... но прога как раз подходит под мои требования...(выполняет, что нужно)
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 14:34   #7 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Это такой велосипедный вариант ls, если я верно понял.

Хорошо, будем работать с тем что есть.
Откуда программа должна брать путь?
Long Cat вне форума   Ответить с цитированием
Старый 13.03.2011, 14:51   #8 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Это такой велосипедный вариант ls, если я верно понял.

Хорошо, будем работать с тем что есть.
Откуда программа должна брать путь?
ну да вы верно поняли)
ну путь начало с /home/ (к примеру), а вообще его нужно задавать в терминале(консоли) к примеру ./имя_проги <путь>
sidjey вне форума   Ответить с цитированием
Старый 13.03.2011, 14:56   #9 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Тогда смело меняйте строку
Код:
int myView(bool l,bool r,const char* path)
{
на
Код:
int main(int argc,char* argv[])
{
  const char* path=argv[0];
Long Cat вне форума   Ответить с цитированием
Старый 13.03.2011, 15:04   #10 (permalink)
sidjey
Member
 
Регистрация: 24.02.2011
Сообщений: 25
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Тогда смело меняйте строку
Код:
int myView(bool l,bool r,const char* path)
{
на
Код:
int main(int argc,char* argv[])
{
  const char* path=argv[0];
это я конечно пробовал, но тут вот какое дело...
myView(l,r,pathName);

из-за того, что нет определения к l,r, myView прога не хочет компилица
sidjey вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 03:14.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.