|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|
Можно ли как-то указать в Makefile, чтобы часть файлов компилировал компилятор C?05.11.2009, 12:19. Показов 10664. Ответов 41
Я пробую программу Qt 4 Designer,и после всех настроек файла .ui я скопировал себе код интерфейса в программу,но она не компилируется- пишет,что стандарт C++ не поддерживает тип long long и указывает на один из typedef-ов в самой библиотеке.Вроде написано,что библиотека писалась на С++,я не понимаю,как так.Как можно выйти из положения,может,просто скомпилировать именно эти файлы компилятором Си? Или не получится?
0
|
|
| 05.11.2009, 12:19 | |
|
Ответы с готовыми решениями:
41
Как послать письмо из VB, так чтобы можно было вручную указать мыло отправителя? |
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
| 07.11.2009, 07:57 [ТС] | ||||||
|
Прочитал в вики:
А можно в Makefile как-то указать,чтобы одни файлы компилировались с одними флагами,а потом эти флаги убирались,и дальше компиляция продолжалась уже без них? Навроде раздельной компиляции.
0
|
||||||
|
|
|||
| 07.11.2009, 13:00 | |||
|
После установки семёрки у меня не встали виртуальные машины, а потому по ходу их переустанавливать придётся. Так что пока поэкспериментировать не на чем. Либо до понедельника и на работе Добавлено через 33 секунды
1
|
|||
|
|
||
| 07.11.2009, 13:59 | ||
|
1
|
||
|
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
|
|||
| 07.11.2009, 20:53 | |||
Так что можешь свою уверенность использовать по прямому назначению ![]() Кстати Qt 4.x не собирается на VS6. Из-за этого в свое время пришлось покупать VC++ 2003.Net. Добавлено через 7 минут
Все нужно клещами вытаскивать ...
1
|
|||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||||||
| 08.11.2009, 01:58 [ТС] | ||||||
|
Проблема всё ещё актуальна для меня,не хочется менять опции компиляции.У меня появилась такая идея:
Делаю интерфейс в виде отдельной библиотеки .so (как и было предложено ранее),причём у неё свой Makefile,компилируется отдельно,а потом её просто слинковать в общий файл.Так получится? Можно ли сделать что-то подобное в Makefile:
0
|
||||||
|
|
|||
| 08.11.2009, 02:28 | |||
![]()
В любом случае, мне приходится Qt не только устанавливать ![]() Добавлено через 3 минуты #pragma, Я вот только не понял, для чего ты указываешь -ansi ?
0
|
|||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||
| 08.11.2009, 02:47 [ТС] | ||
|
То есть я руководствуюсь правилом: если есть опция,ужесточающая контроль над кодом при компиляции,то я её включаю.
0
|
||
|
|
||||||
| 08.11.2009, 12:48 | ||||||
|
#pragma, делать отдельную динамическую библиотеку получится. ТОлько вот в флаге "-L/gui/lib/libgui.so" у тебя после буквы "L" слэш лишний, ибо с ним поиск будет весись в "/gui/lib/libgui.so" (т.е. от корневого каталога, а не текущего)
Сейчас ты в Makefile навалил какую-то одну большую общую кашу. Сборки динамической библиотеки, условно, делается так:
Далее встаёт вопрос с тем, как её использовать. Т.е. при линковке её подцеплятьстандартно через опции -L -l. Но в момент запуска приложения динамический загрузчик должен будет найти эту библиотеку. А поиск ведётся только по стандартным путям (а тебе надо, чтобы библиотека подцепилась откуда-то рядышком с бинарником). Есть разные способы это сделать, но все они сводятся к тому, что нужно задавать некий абсолютный путь до каталога, где лежит динамическая библиотека. Нормальных общих вариантов для решения этой проблемы нет, а потому если программа устанавливается НЕ в стандартные каталоги, то обычно с программой поставляется скрипт, который устанавливает переменную окружения LD_LIBRARY_PATH и запускает программу niXman, в 29-м посту я тебе всё объяснил. Книжка по Си не поможет. Например, ты напишешь код "x = (a>b) ? : y;" и из-под gcc он будет работать. ОТкуда ты узнаешь, что с точки зрения стандартного Си этот код некорректен? Предлагаешь на каждую строку кода лезть в книжку и проверять, правильно это или нет?
2
|
||||||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
||
| 09.11.2009, 05:39 [ТС] | ||
|
http://www.prefetch.net/articl... brary.html Правда там всё на английском,и хотя читаю неплохо,многие моменты не понятны из-за специфики/незнания темы.Но как я понял,там этот способ осуждают и предлагают альтернативный(и вроде бы более действенный). В-общем надо будет придумать какой-то универсальный скрипт,и желательно,чтобы это не требовало полномочий суперпользователя.Лишний раз sudo вводить напрягает новичков. Добавлено через 1 час 25 минут Ой я даже много доводов против этого нашёл,достаточно задать гуглу вопрос: почему опция X это плохо? http://www.xahlee.org/UnixReso... dpath.html Я так понял в последних версиях линкера добавили специальную опцию -R,указывающую где искать библиотеку в runtime,но я так примерно понял,может,ошибся.
0
|
||
|
|
|
| 09.11.2009, 09:06 | |
|
Опция -R (или, что более характерно для gcc/gld опция -Wl,-rpath=) - это добавление каталога в путь поиска динамических библиотек. Требует подстановки АБСОЛЮТНОГО пути. Т.е. после этого у тебя программа становится привязанной к конкретному месту. Вариант в LD_LIBRARY_PATH более гибкий. Opera, например пошла по тому же пути со скриптом - скрит в run-time определяет своё местоположение, выставляет переменные окружения, после чего запускает бинарник.
Тебе для твоих целей для начала сойдёт и вариант -R. (-Wl,-rpath=.) - в этом случае тебе придётся держать динамические библиотеки в текущем каталоге (либо во внутреннм, но тогда в опцию -R подавай относительный путь). В этом случае бинарник у тебя будет нормально запускаться только из текущего каталога, но хоть поймёшь, как с динамическими библиотеками работать
1
|
|
|
|
||||||||||||
| 09.11.2009, 12:56 | ||||||||||||
|
В ревизии 52 я внёс следующую правку в Makefile Вместо
1
|
||||||||||||
|
Временно недоступен
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
|
|||||||||||
| 11.11.2009, 05:43 [ТС] | |||||||||||
|
Пробую скомпилировать,пришлось сначала запускать qmake,она сгенерила Makefile,я его немного поправил,вроде всё верно?
Заголовок Makefile
Но почему-то получаю ошибки: Ошибки
Как будто линкер эту библиотеку не видит.
0
|
|||||||||||
|
|
|
| 11.11.2009, 09:42 | |
|
В -Wl,-rpath= и -L надо подавать пути до КАТАЛОГА, где лежит файл, а в -l - по сути имя библиотеки (без начинающего "lib" и завершающего суффикса). Т.е. правильно будет -Wl,-rpath=libgui -Llibgui -lgui
1
|
|
| 11.11.2009, 09:42 | |
|
Можно ли как то в Embarcadero RAD Studio XE6 указать структуру файлов скомпилированого проекта
Можно ли как нибудь явно указать тип переменной, чтобы ИДЕ рассказала мне все что я хочу знать об объекте? Как в этом Makefile указать опцию для сбора информации для дебагинга? Как в makefile сделать чтобы проект собирался из директории src Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Insert Delete GetRandom O(1) (Leetcode: 380)
alhaos 16.06.2026
Insert Delete GetRandom O(1)
Сложность: Medium
Источник: LeetCode 380
Задача
Реализовать структуру данных RandomizedSet, которая поддерживает следующие операции за O(1) в среднем:
|
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли.
Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
|
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
Min Stack
Сложность: Medium
Источник: LeetCode 155
Задача:
Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1).
Методы:
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|