Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10

Не получается собрать cpp файл

18.08.2015, 16:32. Показов 5341. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Товарищи,

Прошу заранее меня извинить, за возможно дурацкие вопросы, но я совсем не программист.

В связи со спецификой моего железа, понадобилось собрать данный пакет (OS Linux Mint 17.2): https://github.com/blackwolf-70/stseries-light

Насколько я понял, это cpp файл + .pro проектный buld файл для QT Creator.
Стандартным gcc с ключом -llibrary собрать у меня что-то не получилось. Поставил QT Creator проект открывает, но выдает сообщение - Could not find qmake configuration file default. Гуглил данное сообщение, честно пытался решить проблему (как советовал гугл) установкой последнего qt-sdk, но тоже не помогло =(

Подскажите, пожалуйста, можно ли собрать данный пакет используя просто gcc с параметрами? И если да то с какими параметрами (ключами) gcc для сборки данного cpp файла запускать?

Или, может быть, .pro файл можно переделать в понятный gcc make файл?

Очень хочется включать подсветку на ноутбуке просто исполняемым файлом, а не пускаться во все тяжкие используя альтернативные способы, типа скриптов на node.js.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2015, 16:32
Ответы с готовыми решениями:

Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp
main.cpp #include <iostream> #include"Header.h" using namespace std; int main() { A ob; ob.f(); return...

Как вызвать в основном .cpp файле тот или иной .cpp файл
Ну, обычно я работал с одним .cpp но вот появилась надобность в основном файле написать интерфейс простенький и выбор одного из 2х...

Как собрать 2 cpp и 1 h файлы в проект?
Работаю в vs2017 если где то обсуждалось ткните носом, если нет то объясните пожалуйста

30
Эксперт С++
 Аватар для schdub
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,892
18.08.2015, 17:05
Цитата Сообщение от Maxim1980 Посмотреть сообщение
Подскажите, пожалуйста, можно ли собрать данный пакет используя просто gcc с параметрами?
Maxim1980, нет. Можно собрать без Qt Creatora, с помощью только qmake.

Цитата Сообщение от Maxim1980 Посмотреть сообщение
Или, может быть, .pro файл можно переделать в понятный gcc make файл?
Это выполняет qmake. После того как вы устаовите Qt, он должен быть доступен для запуска из командной строки.

После установки Qt, установите библиотеки lhidapi-hidraw hidapi-libusb, т.к. программа зависит от них.

далее чтобы собрать программу из командной строки нужно ввести:
Bash
1
qmake && make
Если есть какие-то ошибки, то гуглим, либо пишем здесь.
0
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
18.08.2015, 20:53  [ТС]
Вот как-то так получилось.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
maxim@maxim-GT70-2PE ~/1 $ qmake && make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++-64 -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -o main.o main.cpp
g++ -m64 -Wl,-O1 -o main main.o    -L/usr/lib/x86_64-linux-gnu -lQtGui -lQtCore -lpthread 
main.o: In function `enumerate_hid()':
main.cpp:(.text+0x171): undefined reference to `hid_enumerate'
main.cpp:(.text+0x444): undefined reference to `hid_free_enumeration'
main.o: In function `set_mode(hid_device_*, kl_const::modes)':
main.cpp:(.text+0x5b1): undefined reference to `hid_send_feature_report'
main.o: In function `set_color(hid_device_*, kl_const::regions, kl_const::colors, kl_const::levels)':
main.cpp:(.text+0x653): undefined reference to `hid_send_feature_report'
main.o: In function `main':
main.cpp:(.text.startup+0xb3e): undefined reference to `hid_init'
main.cpp:(.text.startup+0xb64): undefined reference to `hid_exit'
main.cpp:(.text.startup+0xba8): undefined reference to `hid_open'
main.cpp:(.text.startup+0xc4a): undefined reference to `hid_close'
main.cpp:(.text.startup+0x1502): undefined reference to `hid_exit'
main.cpp:(.text.startup+0x1507): undefined reference to `hid_init'
main.cpp:(.text.startup+0x1523): undefined reference to `hid_open'
main.cpp:(.text.startup+0x1571): undefined reference to `hid_exit'
collect2: error: ld returned 1 exit status
make: *** [main] Ошибка 1
Все плохо? Или жить будет?

В результате создался файл main.o

Что с ним дальше делать?

Если верить автору ( https://github.com/blackwolf-70/stseries-light ), то нужно запускать под sudo. Но sudo говорит что команды main.o нет (хотя я в свойствах файла разрешил запуск как приложение).
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 21:03
Bash
1
g++ main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb
1
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
18.08.2015, 21:23  [ТС]
Bash
1
2
3
maxim@maxim-GT70-2PE ~/1 $ g++ main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb
main.cpp:2:27: fatal error: hidapi/hidapi.h: Нет такого файла или каталога
 #include <hidapi/hidapi.h>
Пробовал сделать папку hidapi (c hidapi.h) прямо в той же директории, где лежит main.cpp
Но все равно ошибка такая же fatal error: hidapi/hidapi.h: Нет такого файла или каталога.

Видимо не там делаю. Куда hidapi.h нужно класть?

Простите великодушно за глупае вопросы, но я на Linux 3 день.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 21:28
Bash
1
sudo apt-get install libhidapi-dev
1
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
18.08.2015, 21:40  [ТС]
Теперь ругается

Bash
1
2
maxim@maxim-GT70-2PE ~/1 $ g++ main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb
main.cpp:3:18: fatal error: QtCore: Нет такого файла или каталог
Хотя QT я ставил.

Bash
1
2
3
4
5
6
maxim@maxim-GT70-2PE ~/1 $ sudo apt-get install libqtcore4
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Уже установлена самая новая версия libqtcore4.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 11 пакетов не обновлено.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 21:43
Bash
1
sudo apt-get install qt-sdk
0
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
18.08.2015, 22:10  [ТС]
Поставил, но не помогло.

Bash
1
2
3
4
5
maxim@maxim-GT70-2PE ~/1 $ g++ main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb
main.cpp:3:18: fatal error: QtCore: Нет такого файла или каталога
 #include <QtCore>
                  ^
compilation terminated.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 22:16
Bash
1
g++ -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -I/usr/include/qt4/QtCore main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb
Добавлено через 1 минуту

Не по теме:

использовать Qt в такой утилите - лишнее

1
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
18.08.2015, 22:23  [ТС]
Теперь так

Bash
1
2
3
4
5
maxim@maxim-GT70-2PE ~/1 $ g++ -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -I/usr/include/qt4/QtCore main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb
In file included from /usr/include/qt4/QtCore/QtCore:3:0,
                 from main.cpp:3:
/usr/include/qt4/QtCore/qabstracteventdispatcher.h:45:28: fatal error: QtCore/qobject.h: Нет такого файла или каталога
 #include <QtCore/qobject.h>
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 22:29
Bash
1
g++ -D_REENTRANT -DQT_NO_DEBUG -DQT_CORE_LIB -I/usr/include/qt4/QtCore -I/usr/include/qt4 main.cpp -o key-light -lQtCore -lhidapi-hidraw -lhidapi-libusb

Не по теме:

с qt-sdk должен был установится QtCreator.
Попробуйте открыть и собрать проект в нем

1
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
18.08.2015, 22:39  [ТС]
Ура! Все заработало! Спасибо огромное!
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 23:43
Дело было вечером, делать было нечего...
В аттаче исходник без зависимости к Qt
сборка:
Bash
1
g++ -std=c++11 main_no_qt.cpp -o kl -lhidapi-hidraw -lhidapi-libusb
Вроде компилится, работу не проверял.
Использовать на свой страх и все такое...
Вложения
Тип файла: 7z main_no_qt.7z (2.9 Кб, 25 просмотров)
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.08.2015, 23:51
пару мелких ошибок нашел
по крайней мере показывает список устройств
Bash
1
2
3
4
5
max@box:/media/sf_shared/documents/st-light$ g++ -std=c++11 main_no_qt.cpp -o kl -lhidapi-hidraw -lhidapi-libusb
max@box:/media/sf_shared/documents/st-light$ ./kl -l
Устройство: 80ee:21 - /dev/hidraw0
    производитель: VirtualBox
    устройство:    USB Tablet
Вложения
Тип файла: 7z main_no_qt.7z (2.9 Кб, 86 просмотров)
1
0 / 0 / 0
Регистрация: 18.08.2015
Сообщений: 10
19.08.2015, 19:22  [ТС]
Круто, обязательно попробую сегодня вечерком собрать. Большое спасибо от лица всех владельцев ноутбуков MSI с клавиатурами SteelSeries. До этого момента, насколько я понял изучая форумы, данный функционал (подсветку) многие включали через рещение на js, например вот: http://forum.ubuntu.ru/index.php?topic=260975.0 Но такие решения требуют установки как минимум node.js, а ставить здоровый фрэймворк ради того чо бы кнопочки светились это, на мой взгляд, не очень красиво, и вообще не очень правильно.

Пара библиотек, исполняемый файл и конфиг куда как красивее и удобнее. Когда-нибудь, кто-то напишет нормальный апплет для настройки данного функционала прямо из трэя, типа: http://ru.msi.com/pic/gx870_5.jpg

Как по мне, исполняемый файл с конфигом решение волне себе достаточное, и удачно вписываются в идеологию Linux в целом.

Добавлено через 9 часов 23 минуты
Замечательно работает версия без Qt.
0
6 / 6 / 2
Регистрация: 27.08.2015
Сообщений: 99
27.08.2015, 19:14
Cra3y,
Добрый вечер) Попробовал сегодня скомпилировать исполняемый файл из вашего исходника (#15) пост, он собрался, но при запуске в терминале выдаёт:

~/keyboard$ ./kl -red
Ошибка открытия устройства!

~/keyboard$ ./kl -l
Устройство: 9da:9090 - /dev/hidraw0
производитель: A4TECH
устройство: USB Device
Устройство: 9da:9090 - /dev/hidraw1
производитель: A4TECH
устройство: USB Device
Устройство: 1770:ff00 - /dev/hidraw2
производитель: MSI EPF USB
устройство: MSI EPF USB

в чём причина?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
28.08.2015, 06:28
kish2015, я всего лишь удалил зависимость от Qt
Вы можете либо попробовать запустить через sudo, либо добавить пользователя в группу владельца файла /dev/hidraw2
Посмотреть группу вы можете через команду
Bash
1
ls -l /dev/hidraw2
Можно так же установить `Stiky bit`, но это не лучшее решение
0
6 / 6 / 2
Регистрация: 27.08.2015
Сообщений: 99
28.08.2015, 19:53
Cra3y,
sudo ./kl -red
Заработало!
ls -l /dev/hidraw2
crw------- 1 root root 251, 2 авг. 28 14:13 /dev/hidraw2

так как вы говорите, мне стоит сделать, что бы подсветка работала всё время с автозапуска?

Добавлено через 45 минут
Cra3y,
Потестировал. У меня работает только одна настройка(preset) - это rgb, game не работает вообще. Если задать без пресета:

sudo ./kl -orange - работает прекрасно, но если я задам пресет сам, к примеру:

gbr left green high
gbr middle blue high
gbr right red high

То получаю:
~/keyboard$ sudo ./kl -p gbr
Указанная настройка не найдена

И такое впечатление, что пресет меняет цвет только для левой, и центральной стороны клавиатуры, потому как правая сторона копирует цвет центральной (проверено на разных цветах), т.е. в моём случае нормально работает только один цвет для всей клавиатуры.

Cra3y,
это можно поправить, введя проверку на сравнение цветов в разных регионах(region)?

Добавлено через 12 минут
Интенсивность тоже не меняется, всегда работает на High, сейчас левая и центральная часть клавиатуры подсвечена одинаково, а в настройках файла конфигурации intens центральной части клавиатуры выставлена на light

Добавлено через 18 минут
Кстати, когда выключаю подсветку, то она выключается в 2 этапа, вместо 3: правая и центральная стороны клавиатуры гаснут одновременно, что подтверждает - пресет неправильно определяет области клавиатуры.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
28.08.2015, 20:14
kish2015, я попробую переделать, но обещать ничего не могу - у меня нет данной клавиатуры, тестировать не могу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.08.2015, 20:14
Помогаю со студенческими работами здесь

Не получается разделить на .h и .cpp
.h class Banner { private: string bannerName; // нименование баннера int numbersShow; // количество показов int...

как компилить файл *.cpp и файл ресурсов одной командой?
Друзья! Ну то есть щас я делаю такой батник: windres -o MENU.o MENU.rc g++ main.cpp MENU.o -o main.exe -mwindows -static rem А это...

Потерял cpp файл, а ехе-шник остался. Можно как-то декомпилировать файл обратно?
Потерял cpp файл, а ехе-шник остался. Можно как-то декомпилировать файл обратно?

clang не получается скомпилировать программу из нескольких cpp файлов в биткод для LLVM
Пытаюсь скомпилировать программу в биткод для выполнения её с помощью виртуальной машины LLVM. Программа состоит из нескольких cpp файлов....

Не получается собрать проект
У меня Linux В качестве оболочки использую bash В системе установлено три версии Qt (3,4,5.5) Вероятно переменные окружения настроены...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru