The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Программеры помогите с компиляцией файла."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на рабочей станции (Public)
Изначальное сообщение [ Отслеживать ]

"Программеры помогите с компиляцией файла."  
Сообщение от vvkelectron (ok) on 27-Сен-08, 15:37 
Программеры помогите с компиляцией файла. Есть файлик torcp.cpp. Это исходники прги разбора торентов для спутниковой рыбалки. При компиляции командой 'g++ torcp.cpp -o torcp' выдает следующее:
torcp.cpp:3:16: ошибка: io.h: No such file or directory
torcp.cpp: In function ‘unsigned int time()’:
torcp.cpp:64: ошибка: нет декларации ‘gettimeofday’ в этой области видимости
torcp.cpp: In function ‘void tor_copy(char*, char*, int, int)’:
torcp.cpp:74: ошибка: нет декларации ‘O_BINARY’ в этой области видимости
torcp.cpp:80: ошибка: нет декларации ‘_lseeki64’ в этой области видимости
torcp.cpp:129: ошибка: нет декларации ‘GetTickCount’ в этой области видимости
Что делал: подставлял реальный путь для io.h первая строка исчезала, остальные остались.
Как победить? Подозреваю что не хватает какой то библы или еще чего-то. Помогите а? Версия Ubuntu 8.04 desktop. В програмировании полный 0. Ссылка на файл torcp.cpp - http://dump.ru/file/1084581

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Программеры помогите с компиляцией файла."  
Сообщение от Хоменко email(ok) on 28-Сен-08, 15:50 
>torcp.cpp:3:16: ошибка: io.h: No such file or directory

apt-get install libc6-dev

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Программеры помогите с компиляцией файла."  
Сообщение от vvkelectron (ok) on 28-Сен-08, 16:15 
>apt-get install libc6-dev

Пишет, что уже установлена самая новая версия libc6-dev :((


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Программеры помогите с компиляцией файла."  
Сообщение от Хоменко email(ok) on 28-Сен-08, 16:38 
Короче, предыдущий комент неправильный.

Однако, данный исходник (и на кой и откуда вы его раскопали?) с элементами кроссплатформенности, но автор его под линуксом компилировать не пробовал.

Путем отделения лишнего он скомпилировался в таком виде:


#include <set>

#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

#include <sys/time.h>
#include <stdio.h>
#include <string.h>

void tor_copy( char *in_file, char * out_file, int show_data = 8192, int file_structure_size = 4096 );

using namespace std;

int main(int argc, char* argv[])

{

    int show_data = 8192;

    if( argc < 2 )

    {

        printf("Usage:\r\ntorcp <input_file> [<output file> show_data]");

        return -1;

    }

    char output_fn[4096];

    if( argc < 3 )

    {

        strcpy( output_fn, "ok_" );

        strcat( output_fn, argv[1] );

    }

    else

    {

        strcpy( output_fn, argv[2] );

    }

    if( argc == 4 )

    {

        char *tmp;

        show_data = strtoul( argv[3], &tmp, 10 );

    }

    tor_copy( argv[1], output_fn, show_data );

    return 0;

}

#define u32 unsigned int

#define u64 unsigned long long

#define u16 unsigned short

struct tfs_item{

    u32 index;
    u32 offset_in_index;
    u64 file_offset;
    u16 peace_len;
    bool operator<(const tfs_item& s) const

    {

#define CMP(a, b) if(a < b) return true; if(a > b) return false;

        CMP( index, s.index )

        CMP( offset_in_index, s.offset_in_index)

#undef CMP

        return false;

    }

};

typedef multiset<tfs_item> item_list_set;

item_list_set il;

u32 time()

{

    struct timeval t;

    gettimeofday(&t, 0);

    return t.tv_sec * 1000 + t.tv_usec / 1000;

}

void tor_copy( char *in_file, char * out_file, int show_data, int file_structure_size )

{

    int hf = -1;

    hf = ::open( in_file, O_RDONLY|O_LARGEFILE, 0644);

    if( hf == - 1 )

    {

        printf("can't open in file\r\n");

        return;

    }

    lseek64( hf, show_data, SEEK_SET );

    u64 next_offset;

    tfs_item tmp;

    u64 index_size = 0x8000;

    u32 index_count = 0;

    u32 last_index_size = 0;

    tfs_item *lpBufer = new tfs_item[file_structure_size];

    int readx;

    u32 tick = time();

    while( 1 )

    {

        readx = read( hf, lpBufer, sizeof( tfs_item ) * file_structure_size );

        readx /= sizeof( tfs_item );

        for( int c = 0; c < readx; c++ )
        {

            memcpy( &tmp, &lpBufer[ c ],  sizeof( tfs_item ) );

            if( tmp.index == -1 )

            {

                lseek64( hf, tmp.file_offset, SEEK_SET );

                break;

            }

            if( tmp.file_offset == 0 )

            {

                goto _l1;

            }

            il.insert( tmp );

            if( index_size < ( tmp.offset_in_index + tmp.peace_len ) )

            {

                index_size = tmp.offset_in_index + tmp.peace_len;

            }

            if( index_count < tmp.index )

            {

                index_count = tmp.index;

                last_index_size = 0;

            }

            if( index_count == tmp.index && last_index_size < ( tmp.offset_in_index + tmp.peace_len ) )

            {

                last_index_size = ( tmp.offset_in_index + tmp.peace_len );

            }

        }

    }

_l1:

    int k = il.size();

    printf( "Total segments %ld\r\n", k );

    printf( "index_size 0x%lX, ", index_size );

    printf( "indexes %ld, ", index_count + 1 );

    printf( "last_index_size 0x%lX\r\n", last_index_size);

    printf( "file size %I64d\r\n", (u64)index_size * index_count + last_index_size);

    printf( "process time %ldms\r\n", time() - tick );

    tick = time();

    int out;

    out = ::open( out_file, O_CREAT|O_WRONLY|O_LARGEFILE, 0644);

    if( out == -1 )

    {

        printf("can't open out file\r\n");

    }

    char buffer[8192];

    item_list_set::iterator i = il.begin();

    while( i!= il.end() )

    {

        lseek64( hf, i->file_offset, SEEK_SET );

        read( hf, buffer, i->peace_len);

        lseek64( out, (u64)i->index * index_size + i->offset_in_index, SEEK_SET );

        write( out, buffer, i->peace_len);

        i++;

    }

    close( out );

    close( hf );

    printf( "Copy time %lds\r\n", ( time() - tick ) / 1000 );

    delete lpBufer;

    return;

    

}

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Программеры помогите с компиляцией файла."  
Сообщение от vvkelectron (ok) on 28-Сен-08, 18:25 
>Короче, предыдущий комент неправильный.
>Однако, данный исходник (и на кой и откуда вы его раскопали?) с

А раскопал я его из небезысвестной программ Skynet от KTODа. В гугле вторая же ссылка на KTOD.
>элементами кроссплатформенности, но автор его под линуксом компилировать не пробовал.

Если я правельно понял я должен ваш текст вставить в новый файл и попытаться его откомпилировать командой "g++ то_что_вы_написали.cpp -o то_как_я_назову"? Не сочтите за труд обьясните, я  говорю что поный ноль в програмировании.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Программеры помогите с компиляцией файла."  
Сообщение от Хоменко email(ok) on 29-Сен-08, 01:05 
>[оверквотинг удален]
>
>А раскопал я его из небезысвестной программ Skynet от KTODа. В гугле
>вторая же ссылка на KTOD.
>>элементами кроссплатформенности, но автор его под линуксом компилировать не пробовал.
>
>Если я правельно понял я должен ваш текст вставить в новый файл
>и попытаться его откомпилировать командой "g++ то_что_вы_написали.cpp -o то_как_я_назову"? Не сочтите
>за труд обьясните, я  говорю что поный ноль в програмировании.
>
>

Ну да, все правильно -- выделить+скопировать+сохранить. Это есть исходник вашей программы, которую я чуть+чуть подпатчил. g++ скомпилирует вам то_как_назовете, которое запускать надо (находясь в той же директории) вот так:

./то_как_назвали

(Если это первая ваша собранная из исходников программа, то искренне поздравляю!)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Программеры помогите с компиляцией файла."  
Сообщение от vvkelectron (??) on 29-Сен-08, 10:52 
>(Если это первая ваша собранная из исходников программа, то искренне поздравляю!)

Большое спасибо! А программа действительно первая. Перехожу на линух потихоньку, изучаю вот. Еще раз спасибо за помощь.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру