Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
Shepard90
5 / 5 / 0
Регистрация: 18.10.2010
Сообщений: 140
#1

Скомпилировать проект - C++

15.07.2012, 10:57. Просмотров 2362. Ответов 20
Метки нет (Все метки)

Не знал в какую ветку кинуть.
Требуется помощь!
В общем имеется штук 10 исходников на С++ - все они представляют один проект.
Нужно все это дело откомпилировать именно в Linux.
Пока не могу понять в Linux или Windows это писалось - пробовал компилить (в линухе компиляция останавливается где-то внутри хедера Mpi.h, по-моему, точно не помню, при вызове Init, а в Visual Studio 2008 уже не могу сказать где - после нескольких попыток, где отладчик выводил много (десятки, а может и СОТНИ!!!) ошибок, сейчас просто пишет "не удается восстановить после предыдущих ошибок; остановка компиляции".
Библиотеки вроде все подключил. Может в Linux не все конечно.
От чего плясать вообще? По каким признакам определить хотя бы в какой ОС это писалось?
Выкладываю пару файлов на страницу
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <Glass.h>
#include <mpi.h>
#include <iostream>
 
int main(int argc, char* argv[]) {
 
    MPI_Init(&argc, &argv);
 
    ca::GlassFiles::Init(argc, argv);
    ca::Glass cag;
 
    cag.calculate();
 
    MPI_Finalize();
 
    return 0;
}
Glass.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 * Glass.h
 *
 *  Created on: 02.12.2008
 *      Author: newmen
 */
 
#ifndef GLASS_H_
#define GLASS_H_
 
#include "GlassCleverCell.h"
#include "GlassFiles.h"
#include "functions.cpp"
#include <mpi.h>
#include <vector>
#include <iostream>
#include <fstream>
 
namespace ca {
 
using namespace std;
 
class Glass {
private:
    // системные переменные
    GlassGlassCleverCell** Cells; // рассчитываемые клетки
    std::vector<GlassGlassCleverCell*>** cNeighbours; // соседи
 
    // настройка мат. аппарата
    int Nx; // количество расчитываемых клеток по оси X
            // (должно быть кратно 4!) [безразм]
    int Ny; // количество расчитываемых клеток по оси Y [безразм]
    int showMinX, showMaxX; // минимальное, максимальное значение
                            // для отображаемого поля по оси X
    int showMinY, showMaxY; // минимальное, максимальное значение
                            // для отображаемого поля по оси Y
    int y_begin, y_end; // начальное и конечное число для итерации
                        // по Y - возникает необходимость, при разбиении
                        // поля на части, при параллельном вычислении
    float saveEveryTime; // сохранять в файл каждые ... раз
 
    // MPI
    int changeEveryStep; // частота обмена между процессами граничных ячеек
    int mpi_rank; // ранг - номер процесса, среди других
    int mpi_size; // количество процессов
    int mpi_width, mpi_height; // ширина и высота поля,
                            // в расчёте на общее количество процессов
    GlassGlassCleverCell *mpi_top_sendbuf, *mpi_bottom_sendbuf,
                        *mpi_left_sendbuf, *mpi_right_sendbuf,
                        *mpi_top_recvbuf, *mpi_bottom_recvbuf,
                        *mpi_left_recvbuf, *mpi_right_recvbuf,
                        *mpi_show_buf, *mpi_save_buf;
    int *mpi_fases_buf;
    MPI_Request *mpi_req;
    MPI_Status *mpi_stat;
 
    float h; // шаг по координате [м]
    float dt; // шаг по времени [сек]
    float m; // характеристический коэффициент параметра, характеризующего
            // дискретизацию пространства и времени (для концентрации) [безразм]
    float p; // характеристический коэффициент параметра, характеризующего
            // дискретизацию пространства и времени (для температуры) [безразм]
    float tNow; // текущее время [сек]
    int numsOfFases[3]; // количества частиц находящихся в каждой из фаз
 
    // настройка аппарата
    float tRepen; // время выдержки расплава [сек]
    int spacePosition; // количество возможных пространственных положений
    float kq; // коэффициент направленного роста [безразм]
    float kcompa1; // коэффициент условия перехода в комплекс [безразм]
    float kcompa2; // коэффициент условия перехода в комплекс [безразм]
    float kcompb1; // коэффициент условия перехода в комплекс [безразм]
    float kcompb2; // коэффициент условия перехода в комплекс [безразм]
 
    // всё что оносится к концентрации
    float C0[ELEM_NUMS]; // начальные концентрации [безразм]
    float D0[2][ELEM_NUMS]; // коэффициенты диффузии по каждому веществу
                            // (аморфная и кристаллическая фазы) [безразм]
    float E[2][ELEM_NUMS]; // энергии активации по каждому веществу
                        // (аморфная и кристаллическая фазы) [безразм]
    float kd; // коэффициент уменьшения диффузии (во сколько раз диффузия
            // меньше, в комплексной фазе, чем в аморфной) [безразм]
 
    // всё что относится к температуре
    float Tbegin; // начальная температура [град C]
    float Tend; // температура окончания процесса [град C]
    float Tcryst; // температура кристаллизации [град C]
    float Tglass; // температура стеклования [град C]
    float Tslab; // температура плит [град C]
    float Tk; // кинетическая температура образования кристалла [град C]
    float dT; // прирост температуры [град C]
 
    float q[ELEM_NUMS]; // кинетический коэффициент кристаллизации [безразм]
 
    float a0; // коэффициент температуропроводности в аморфной фазе [безразм]
    float ka1, ka2; // коэффициенты, отражающие изменение
                    // температуропроводности [безразм]
    float aslab; // коэффициент температуропроводности на границе [безразм]
 
public:
    Glass();
    virtual ~Glass();
 
    void calculate(); // запуск расчёта
 
private:
    void debugInfo(const std::string& mes);
 
    void varFile(); // чтение параметров из конфигурационного файла
 
    // вывод ошибки при открытии файла
    void fopenError(const char* filename, const char* message, const int& code);
 
    void init(); // начальная инициализация рассчитываемых массивов
    void changePhase(); // проверка фазового перехода, смена состояния
    void changeConcentrate(); // смена концентраций
    void changeTemperature(); // смена температур
};
 
}
#endif /* GLASS_H_ */
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * GlassGlassCleverCell.h
 *
 *  Created on: 02.01.2009
 *      Author: newmen
 */
 
#ifndef GLASSCLEVERCELL_H_
#define GLASSCLEVERCELL_H_
 
#include "GlassStructCell.h"
#include "consts.h"
#include <fstream>
#include <iostream>
#include <cmath>
 
namespace ca {
 
using namespace std;
 
class GlassGlassCleverCell {
public:
    class Error { };
 
    static float D0[3][ELEM_NUMS]; // начальные коэффициенты диффузии каждого
                                // вещества, для каждой из фаз
    static float E[3][ELEM_NUMS]; // энергии активации по каждому веществу,
                                // для каждой из фаз
    static float a0[ELEM_NUMS]; // начальные коэффициенты
                                // температуропроводности, для каждой из фаз
 
private:
    GlassStructCell Cell; // фаза, температура, концентрации...
    float q; // коэффициент направленного роста
    float a;
    float D[ELEM_NUMS];
 
    float CTemp[ELEM_NUMS]; // временные концентрации
    float TTemp; // временная температура
    bool TChange; // изменялась ли температура
 
public:
    GlassGlassCleverCell();
    virtual ~GlassGlassCleverCell();
 
    void write(ofstream& outf) const {
        outf.write((const char*)&Cell, sizeof(Cell));
    }
 
    static void setD0(const float D0[2][ELEM_NUMS], const float& Kd);
    static void setE(const float E[2][ELEM_NUMS]);
    static void setA0(const float& a0, const float& ka1, const float& ka2);
 
    Phase getPhase() const {
        return (Phase)Cell.F;
    }
 
    void setPhaseAt(const Phase& F) {
        Cell.F = (char)F;
 
        for (short i = 0; i < ELEM_NUMS; i++)
            D[i] = D0[i][F] * exp(-E[i][F] / (R * (Cell.T + T0)));
        a = a0[F];
        TChange = false;
    }
 
    void setPhase(const Phase& newF) {
        if (Cell.F == newF && !TChange) return;
        setPhaseAt(newF);
    }
 
    float getConcentrate(const short& num) const {
        return Cell.C[num];
    }
 
    void setConcentrate(const short& num, const float& val) {
        Cell.C[num] = CTemp[num] = val;
    }
 
 
    void incConcentrate(const short& num, const float& val) {
        CTemp[num] += val;
    }
 
    float getDiffusion(const short& num) const {
        return D[num];
    }
 
    void setDiffusion(const short& num, const float& val) {
        D[num] = val;
    }
 
    float getTemperature() const {
        return Cell.T;
    }
 
    void setTemperature(const float& val) {
        Cell.T = TTemp = val;
        TChange = true;
    }
 
    void incTemperature(const float& val) {
        TTemp += val;
        TChange = true;
    }
 
    float getA() const {
        return a;
    }
 
    void setA(const float& val) {
        a = val;
    }
 
    float getQ() const {
        return q;
    }
 
    void setQ(const float& val) {
        q = val;
    }
 
    void nextTimeStep() {
        for (short i = 0; i < ELEM_NUMS; i++) Cell.C[i] = CTemp[i];
        Cell.T = TTemp;
    }
};
 
}
#endif /* GLASSCLEVERCELL_H_ */
Надеюсь кто-нибудь взглянет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2012, 10:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скомпилировать проект (C++):

Необходимо скомпилировать проект - C++
Здравствуйте. Помогите скомпилировать проект, пытаюсь сам сделать выдает то есть ошибка и не компилируется, то нет ошибок, а все равно не...

Помогите скомпилировать проект - C++
Собственно сам проект - (ссылка) Скачал. Доустановил библиотеки STL и всеравно не компилируется... error LNK2019: ссылка на...

Скомпилировать проект на Theards - C++
Ребят, очень нужна помощь в компиляции проекта на theards на С++. Хочу разобраться в работе с нитями. Нашла удачный пример работы с...

Как скомпилировать проект из нескольких файлов? - C++
Интересует компиляция данного проекта. Извините, если что-то не так |: Пункт 5.18. Правил: Запрещено помещать задания и тексты в виде...

Не получается скомпилировать проект в RAD Studio - C++
Создают проект VCL Form, ничего не добавляя в него. Просто проект, без ошибок. И не могу скомпилировать, просто кнопка Run не активна....

Скомпилировать проект в exe Visual Studio 2013 - C++
Здравствуйте! Я написал консольную игру в VS 2013. И к ней добавил музыку, закинув в папку решения и объявив командой PlaySound(). Но как...

20
Shepard90
5 / 5 / 0
Регистрация: 18.10.2010
Сообщений: 140
15.07.2012, 13:20  [ТС] #16
и хедеры ведь подключаются из /usr/include
0
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
15.07.2012, 13:22 #17
хидер != библиотеке
0
Shepard90
5 / 5 / 0
Регистрация: 18.10.2010
Сообщений: 140
15.07.2012, 13:29  [ТС] #18
... вашу мать!!! В каталоге появился бинарник!!! Спасибо!!!

Добавлено через 1 минуту
то есть в хедерах объявлены методы? А в библиотеках они описаны уже? Так получается?
0
NoMasters
Псевдослучайный
1762 / 1105 / 73
Регистрация: 13.09.2011
Сообщений: 3,141
15.07.2012, 13:31 #19
Цитата Сообщение от Shepard90 Посмотреть сообщение
то есть в хедерах объявлены методы? А в библиотеках они описаны уже? Так получается?
В общем и целом так. В хидере описывается та информация, которая нужна для работы с собранной в объектник реализацией.
1
Shepard90
5 / 5 / 0
Регистрация: 18.10.2010
Сообщений: 140
15.07.2012, 13:39  [ТС] #20
бинарник есть, но при его запуске
Bash
1
 ./a.out
вылетает это
[shrpard90-EP45C-DS3R:05440] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at line 357
[shrpard90-EP45C-DS3R:05440] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at line 230
[shrpard90-EP45C-DS3R:05440] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../orte/runtime/orte_init.c at line 132
--------------------------------------------------------------------------
It looks like orte_init failed for some reason; your parallel process is
likely to abort. There are many reasons that a parallel process can
fail during orte_init; some of which are due to configuration or
environment problems. This failure appears to be an internal failure;
here's some additional information (which may only be relevant to an
Open MPI developer):

orte_ess_set_name failed
--> Returned value A system-required executable either could not be found or was not executable by this user (-127) instead of ORTE_SUCCESS
--------------------------------------------------------------------------
--------------------------------------------------------------------------
It looks like MPI_INIT failed for some reason; your parallel process is
likely to abort. There are many reasons that a parallel process can
fail during MPI_INIT; some of which are due to configuration or environment
problems. This failure appears to be an internal failure; here's some
additional information (which may only be relevant to an Open MPI
developer):

ompi_mpi_init: orte_init failed
--> Returned "A system-required executable either could not be found or was not executable by this user" (-127) instead of "Success" (0)
--------------------------------------------------------------------------
*** The MPI_Init() function was called before MPI_INIT was invoked.
*** This is disallowed by the MPI standard.
*** Your MPI job will now abort.
[shrpard90-EP45C-DS3R:5440] Abort before MPI_INIT completed successfully; not able to guarantee that all other processes were killed!
0
Simply me
235 / 31 / 2
Регистрация: 05.05.2012
Сообщений: 309
Завершенные тесты: 1
13.09.2012, 16:26 #21
такую же ошибку выдает( пробовала сделать как здесь http://www.bezpravil.kz/ubuntu/mpi-v-ubuntu.html опять то же самое пишет(
0
13.09.2012, 16:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2012, 16:26
Привет! Вот еще темы с ответами:

Как рекурсивно скомпилировать проект через командную строку? - C++
Как рекурсивно скомпилировать проект через командную строку? Если у меня заголовочные файлы в папке Headers. Но мне нужен универсальный...

Как скопировать проект в другой проект для дальнейшей работы над новой версией (VS)? - C++
(Visual Studio 2013) Например я сделал один проект, пусть это будет проект версия №1, затем я захотел улучшить проект версии №1 и сделать...

Скомпилировать - C++
Доброго времени суток, скомпилируйте пожалуйста программу по коду, Visual Studio под рукой нету. #include &lt;stdio.h&gt; #include &lt;string.h&gt;...

Как скомпилировать проект чтобы вложились нужные библиотеки!!! - C++
Привет, народ может поможете. Как мне скомпилировать проект чтобы в папке с прогой, С++ вложил все нужные ей библиотеки, dll? (С++ Архитект...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru