Форум программистов, компьютерный форум, киберфорум
C/C++: IDE, инструментарий
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/70: Рейтинг темы: голосов - 70, средняя оценка - 4.81
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20

Пытаемся подружить clang 3.6 и Code::Blocks 13.12 + MinGW под Windows 7

17.03.2015, 10:03. Показов 14301. Ответов 54

Студворк — интернет-сервис помощи студентам
Скачал clang. Установил в корень диска С. То есть, путь получился такой:
C:\LLVM\
До этого у меня уже был установлен Code::Blocks 13.12 в связке с MinGW (GCC 4.8.1). У меня он установлен тоже в корень диска С. То есть, путь такой:
C:\CodeBlocks\
Открыл Code::Blocks, в Settings -> Compiler в выпадающем меню установил в качестве дефолтного LLVM Clang Compiler.
Попробовал скомпилить Hello World! - ругается, что не может найти хедер iostream. Ладно, думаю, пропишем тебе пути к хедерам. В Settings -> Compiler -> Search directories -> Compiler добавил три строчки:
C:\CodeBlocks\MinGW\include
C:\CodeBlocks\MinGW\lib
C:\CodeBlocks\MinGW\lib\gcc\mingw32\4.8. 1\include\c++
Ещё раз пытаюсь скомпилить Hello World! Теперь ругается, так:
C:\CodeBlocks\MinGW\lib\gcc\mingw32\4.8. 1\include\c++\iostream|38|fatal error: 'bits/c++config.h' file not found|
Дописал в Settings -> Compiler -> Search directories -> Compiler четвёртую строчку:
C:\CodeBlocks\MinGW\lib\gcc\mingw32\4.8. 1\include\c++\mingw32\bits
Не помогает. Всё равно ругается fatal error: 'bits/c++config.h' file not found

Что я делаю не так?
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2015, 10:03
Ответы с готовыми решениями:

Пытаемся прикрутить Clang к QtCreator под Windows7 x64 посредством MSYS2
По мотивам этой темы: DrOffset, а как?

SFML, MinGW 5.2.0, Code::blocks
В общем решил я собрать SFML сам, потому что не хочу скачивать MinGW 4.9.2 только чтобы пользоваться SFML, ну начал я, значит, собирать его...

Code::Blocks 17.12 и MinGW (последний)
Всем привет! Скачал Code::Blocks (codeblocks-17.12mingw-setup.exe), написал простенькую программку - #include <windows.h> ...

54
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
17.03.2015, 10:07
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Цитата Сообщение от gru74ik Посмотреть сообщение
Дописал в Settings -> Compiler -> Search directories -> Compiler четвёртую строчку:
Наверное надо так:
C:\CodeBlocks\MinGW\lib\gcc\mingw32\4.8. 1\include\c++\mingw32
Но вообще лучше так не мучиться.
Есть возможность получить и компиляторы и набор библиотек к ним уже настроенными и готовыми к использованию. См. в соседней теме мой ответ.
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.03.2015, 11:02
Получилось? У меня без IDE нормальным способом это никогда не получалось.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 11:04  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Получилось?
Я пока дома, обедаю - времени в обрез. Примерно через пол-часа вернусь на работу, там попробую.
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
17.03.2015, 11:49
Цитата Сообщение от castaway Посмотреть сообщение
У меня без IDE нормальным способом это никогда не получалось.
Тебе тоже тогда посоветую msys2 поставить.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 11:51  [ТС]
Исправил четвёртый путь на вариант предложенный DrOffset'ом. Теперь вот такое выдаёт:
-------------- Build: Debug in clangSecondProject (compiler: LLVM Clang Compiler)---------------

clang++.exe -LC:\CodeBlocks\MinGW\lib\gcc\mingw32\4.8 .1\include\c++\mingw32\bits -o bin\Debug\clangSecondProject.exe obj\Debug\main.o
clang++.exe: error: unable to execute command: program not executable
clang++.exe: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Process terminated with status 1 (0 minute(s), 0 second(s))
0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.03.2015, 11:55
DrOffset, у меня стоит MSYS2, но, честно говоря, я не понимаю какое отношение она имеет к MinGW и Clang в данном случае.
Соседняя тема, это какая? Можно ссылку?
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 11:59  [ТС]
Соседняя тема.

Добавлено через 1 минуту
castaway, если я правильно понял, MSYS2 - это аналог MinGW.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.03.2015, 12:00
gru74ik, нет, MSYS это Unix-подобная среда командной строки.
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
17.03.2015, 12:00
Цитата Сообщение от castaway Посмотреть сообщение
у меня стоит MSYS2, но, честно говоря, я не понимаю какое отношение она имеет к MinGW и Clang в данном случае.
Прямое. И тот и другой есть в составе.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 12:09  [ТС]
Добавил в Settings -> Compiler -> Toolchain executables -> Additional Paths строчку
C:\CodeBlocks\MinGW\bin
и всё заработало
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
17.03.2015, 12:10
Цитата Сообщение от gru74ik Посмотреть сообщение
MSYS2 - это аналог MinGW.
Не аналог. Он предоставляет юникc-подобное окружение. Но в данном случае я его рекомендую не поэтому. А потому что средства из него можно легко использовать в IDE. Например оно стоит в D:\Develop\MSYS2. Теперь достаточно в настройках компилятора в IDE прописать путь D:\Develop\MSYS2\mingw32. После этого в IDE заработает не только mingw, но и все библиотеки, которые ты поставил с помощью оболочки msys. Для clang действия аналогичные, только имена компилятора и линкера другие.
4
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.03.2015, 13:09
Обычно пишется какой-то скрипт используемой системы построения (make, cmake, etc) где и прописывается компилятор, пути и т.д. Потом при помощи IDE этот скрипт подхватывается и при помощи него же и происходит сборка.
Самой IDE никто не строит, как-то по-ламерски это.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 13:18  [ТС]
Цитата Сообщение от Kastaneda Посмотреть сообщение
Обычно пишется какой-то скрипт используемой системы построения (make, cmake, etc) где и прописывается компилятор, пути и т.д.
Ещё бы уметь это делать...

Добавлено через 1 минуту
Цитата Сообщение от gru74ik Посмотреть сообщение
и всё заработало
Рано радовался Новые ошибки лезут:
-------------- Build: Debug in thirdClangProject (compiler: LLVM Clang Compiler)---------------

clang++.exe -LC:\CodeBlocks\MinGW\lib\gcc\mingw32\4.8 .1\include\c++\mingw32\bits -o bin\Debug\thirdClangProject.exe obj\Debug\main.o
obj\Debug\main.o: In function `main':
D:\0_0\CPP\Projects\thirdClangProject/main.cpp:12: undefined reference to `_Unwind_Resume'
obj\Debug\main.o.eh_frame+0x63): undefined reference to `__gxx_personality_v0'
collect2.exe: error: ld returned 1 exit status
clang++.exe: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
Process terminated with status 1 (0 minute(s), 0 second(s))
2 error(s), 0 warning(s) (0 minute(s), 0 second(s))
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.03.2015, 13:36
Попробуй просто Hello World собрать сначала руками из консоли, потом из IDE.

Добавлено через 4 минуты
Цитата Сообщение от gru74ik Посмотреть сообщение
D:\0_0\CPP\Projects\thirdClangProject/main.cpp:12: undefined reference to `_Unwind_Resume'
Вот, что на SO говорят
Undefined references to _Unwind_Resume are caused by compiling with a GCC with a different stack unwinding method from that used by the library you're trying to link with.
Добавлено через 5 минут
Еще покажи полный лог билда, то, что выше уже линковка, компиляции не видно.
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 14:25  [ТС]
Судя по ошибке, ты не HelloWorld собираешь, тут сложнее понять чего именно ему не хватает.
Так и есть. Собирал Hello World, всё было нормально, я уж обрадовался. Потом решил свои упражнения с классами из Праты покомпилить clang'ом, не тут-то было.
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 14:37  [ТС]
Пытался скомпилить вот это:

main.cpp
Кликните здесь для просмотра всего текста
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
//  sp_Ch10_Pg531_Ex02
/// Занятия по книге Стивена Праты "Язык программирования С++" (2013, 6-е изд.).
/// Упражнения по программированию. Глава 10, страница 531, упражнение 2.
/*
Пусть имеется определение следующего простого класса:
class Person
{
    private:
        static const LIMIT = 25;
        string lname;         // фамилия
        char fname[LIMIT];    // имя
    public:
        Person () { lname = ""; fname[0] = '\0'; }              // #1
        Person (const string & ln, const char * fn = "Heyyou"); // #2
 
        // Следующие методы отображают lname и fname
        void Show() const;          // формат: имя фамилия
        void FormalShow() const;    // формат: фамилия, имя
};
(В нем используется объект string и символьный массив, так что вы сможете
сравнить применение этих двух форм.) Напишите программу, которая дополнит
реализацию за счет предоставления кода для пока еще не определенных
методов. В программе, использующей класс, должны также присутствовать вызовы
трех возможных конструкторов (без аргументов, с одним аргументом, с двумя
аргументами) и двух методов отображения. Ниже приведен пример применения
этих конструкторов и методов:
Person one;     // используется конструктор по умолчанию
 
Person two("Smythecraft");  // используется конструктор #2
                            // с одним аргументом по умолчанию
 
Person three("Dimwiddy", "Sam");    // используется конструктор #2,
                                    // без аргументов по умолчанию
one.Show();
cout << endl;
one.FormalShow();
// и т.д. для объектов two и three
*/
#include <iostream>
#include "Person.h"
 
int main()
{
    Person one;
    Person two("Smythecraft");
    Person three("Dimwiddy", "Sam");
 
    one.show();
    std::cout << std::endl << std::endl;
    one.formal_show();
    std::cout << std::endl << std::endl << std::endl;
 
    two.show();
    std::cout << std::endl << std::endl;
    two.formal_show();
    std::cout << std::endl << std::endl << std::endl;
 
    three.show();
    std::cout << std::endl << std::endl;
    three.formal_show();
    std::cout << std::endl;
    return 0;
}


Person.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef PERSON_H
#define PERSON_H
 
#include <string>
 
class Person
{
    private:
        static const int LIMIT = 25;
        std::string m_lastname;  // фамилия
        char m_firstname[LIMIT]; // имя
 
    public:
        Person() { m_lastname = ""; m_firstname[0] = '\0'; }              // #1
        Person(const std::string & lname, const char * fname = "Heyyou"); // #2
        ~Person() {}
        void show() const;        // формат: имя фамилия
        void formal_show() const; // формат: фамилия, имя
};
 
#endif // PERSON_H


Person.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "Person.h"
#include <iostream>
#include <string>
#include <cstring>
 
Person::Person(const std::string & lname, const char * fname)
{
    m_lastname = lname;          // фамилия
    strcpy(m_firstname, fname);  // имя
}
 
void Person::show() const
{
    std::cout << m_firstname << " " << m_lastname;
}
 
void Person::formal_show() const
{
    std::cout << m_lastname << ", " << m_firstname;
}


Выдаёт такое:
Миниатюры
Пытаемся подружить clang 3.6 и Code::Blocks 13.12 + MinGW под Windows 7  
0
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
17.03.2015, 14:47  [ТС]
Попробую пойти по пути, предложенному DrOffset'ом.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
17.03.2015, 14:51
На скрине ошибки линкера, выложи полный билд лог.
0
 Аватар для Kant
37 / 37 / 18
Регистрация: 15.05.2013
Сообщений: 236
17.03.2015, 15:05
А чем Qt не угодил?
Скачиваешь и в путь. Никаких проблем и заморочек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2015, 15:05
Помогаю со студенческими работами здесь

Отвечает за стиль программы - Code Blocks или mingw?
Здравствуйте! Столкнулся с такой проблемой - при компиляции программ в Code Blocks с помощью mingw стиль получается как у классического...

Как убрать неполадки совместимости с Code::Blocks при установке этой IDE под Windows 7 ?
Как убрать неполадки совместимости с Code::Blocks.Запускаю установочник и вылезает ошибка установки.Как устранить??????(Windows 7,)

GTK / C++ проект в Code::Blocks под Windows
Библиотека GTK позволяет довольно быстро и просто делать графические приложения под разные операционные системы, к тому же она бесплатная и...

Установка библиотеки GTK+ в среде Code::Blocks под Windows
Я делал всё, как написано здесь http://grafika.me/node/149 Но библеотека не распознаётся при компилляции. Помогите разобраться.

Где скачать code blocks с x64-м mingw?
Где скачать code blocks с x64-м mingw? Установить его отдельно и подцепить не получается.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru