LINUX.ORG.RU

Как использовать GCC вместо Clang++?

 ,


0

1

Проблема такая. Собираю исходники. Configure проверяет наличие GCC, а когда делаешь make, запускается clang++. В итоге сборка оканчивается какой-то ошибкой с linked. Удалил clang, чтобы собирать только с GCC, а make требует наличия clang.

Project ERROR: Cannot run compiler 'clang++'. Output:
===================
===================
Maybe you forgot to setup the environment?
make: *** [Makefile:331: qtractor.mak] Ошибка 3


Последнее исправление: Luser248 (всего исправлений: 3)

Ответ на: комментарий от Luser248
  1. CC=gcc,

  2. также можно ./configure CC=/usr/bin/gcc или

  3. можно в configure.ac исправить AC_PROG_CC так AC_PROG_CC([gcc])

  4. или подправить компилятор по умолчанию в configure.ac перед вызовом AC_PROG_CC так CC=${cc-/usr/bin/gcc},

правда ваш путь к гцц может отличаться, узнать можно whereis gcc

AKonia ★★
()
Последнее исправление: AKonia (всего исправлений: 7)
Ответ на: комментарий от AKonia

Прбовал CC=gcc и make CC=gcc. Не помогает.

В configure.ac есть только такое:

# Checks for programs.
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXXCPP

# Checks for languages.
AC_LANG_CPLUSPLUS
Luser248
() автор топика
Ответ на: комментарий от Luser248

AC_PROG_CXX это и есть компайлер для C++

anonymous
()

2021 год, autotools по прежнему полощет мозг юзеру, как и четверть века назад.
А разве не g++ надо вызывать?

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Luser248

Возможно, у тебя clang где-то закэширован. Удали всё и начни по новой.

rupert ★★★★★
()
Ответ на: комментарий от Luser248

Ну очевидно же, что в случае плюсов AC_PROG_CXX([g++]) или предыдущие варианты, с поправкой на компилятор плюсов, плюс вообще стоит проверить наличие g++

AKonia ★★
()

В makefile:331 используется qmake. Возможно, это он категорически требует clang. И как быть?

$(name).mak:	$(name).pro
	@$(QMAKE) -o $(name).mak $(name).pro
Luser248
() автор топика
Ответ на: удаленный комментарий

Это говно свалится по ошибке в строке одинадцать тысяч пятьсот блядь двадцать пять. И что мы увидим в этой строке? Функцию report_error. Будет ли там стектрейс? Конечно нет.

:-(

wandrien ★★
()
Ответ на: удаленный комментарий

По секрету скажу, что meson тоже не умеет.

anonymous
()
Ответ на: комментарий от anonymous

Я не умею в autotools, но, как юзер, понял одну вещь: если разраб в него плохо умеет, autotools не будет конфигурироваться НИГДЕ, кроме окружения, идентичного окружению разработчика. И это дико бесит.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

В моей Дженте таких проблем с autotools не встречал, а с meson - да. Обход проблемы есть, но всё равно бесит.

anonymous
()
Ответ на: комментарий от anonymous

Так то gentoo.
А вот если чего из сорцов руками...

Shadow ★★★★★
()
Ответ на: комментарий от Luser248

Это очень странно так как обычно проекты использующие autotools им же и собираются, для qmake указать нужный компилятор можно через переменные окружения QMAKE_CXX и QMAKE_CC

imb ★★
()
Ответ на: комментарий от Luser248

Ну, это означает, что проблема не в Autotools, а в qmake.

Объективно, признавая справедливость всех претензий к Autotools, скажу, что, при наличии у разработчика рук, всё будет работать. Как, впрочем, и в случае с qmake.

Что делать? Разбираться.

Либо выложить исходники.

Либо написать автору проекта.

Bass ★★★★★
()
Ответ на: комментарий от anonymous

В моей Дженте таких проблем с autotools не встречал, а с meson - да.

У меня Meson работает везде включая Haiku и Windows. Видимо дистрибутив/файлы сборки кривые.

X512 ★★★★★
()
Ответ на: комментарий от X512

libtool всегда была куском говнокода, это правда.

Ты перепутал меня с типичной местной аудиторией, которая всегда топит за свой единственно верный курс, наплевав на логику и здравый смысл.

wandrien ★★
()
Ответ на: комментарий от wandrien

libtool всегда была куском говнокода, это правда.

Оно часть Autotools, так что и Autotools наследует статус «куска говнокода». Не вижу попыток переписывания libtool или его замены на что-то другое. Лучше сразу весь набор Autotools на помойку.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 1)
Ответ на: комментарий от X512

Autotools часть Линукса, так что и Линукс наследует статус «куска говнокода». Не вижу попыток переписывания Autotools или его замены на что-то другое. Лучше сразу весь Линукс на помойку.

wandrien ★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Autotools часть Линукса, так что и Линукс наследует статус «куска говнокода».

Под Линукс можно писать без Autotools, а насчёт Autotools без libtool не уверен.

X512 ★★★★★
()
Ответ на: комментарий от X512

В самом скрипте ничего ужасного нет, он просто старый и с длинным техническим долгом.

Ну ты же не был тем героем, который помог бы GNU переписать это нагромождение костылей, правильно?

Вместо кооперации и взаимопомощи люди предпочитают тянуть одеяло на себя.

wandrien ★★
()
Ответ на: комментарий от wandrien

Ну ты же не был тем героем, который помог бы GNU переписать это нагромождение костылей, правильно?

Зачем если есть более адекватные решения Cmake и Meson (а также Jam, SCons и т.д., да почти всё угодно лучше Autotools)? Я только за скорейшую кончину всех компонентов Autotools.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от X512

Вместо кооперации и взаимопомощи люди предпочитают тянуть одеяло на себя.

Я только за скорейшую кончину всех компонентов Autotools.

Очень типично.

Примерно как демократы, которые готовы расстрелять всех, кто не согласен с демократией.

wandrien ★★
()
Ответ на: комментарий от anonymous

Неее, с мезоном столько боли не было. Закидываешь ему тулчейны и всё работает. Есть проблема, что они периодически что-нибудь депрекейтят/обновляют, из-за чего приходится подпиливать, но в целом – норм, хотя бы без этой фрустрации с «попробуй догадайся что в этой шелл лапше на 25к строк опять сломалось».

Stil ★★★★★
()
Ответ на: комментарий от wandrien

Очень типично.

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

X512 ★★★★★
()
Ответ на: комментарий от X512

Суть в том, что тебе не достаточно пользоваться свои мезоном, нужно обязательно всех построить.

Но тут не тоталитарная секта.

wandrien ★★
()
Ответ на: комментарий от iZEN

Всё перепробовал, ничего не помогает. Файла /etc/make.conf вообще нет. Я его создал для пробы, но ничего.

Luser248
() автор топика
Ответ на: комментарий от imb

Пробовал QMAKE_CXX и QMAKE_CC в разных вариантах. Не помогает. Уточните, пожалуйста, как точно их применять?

Luser248
() автор топика

Короче, без Clang не обойтись. Пришлось поставить его обратно и разобраться в ошибках, которые он выдаёт. Оказалось, что ему не хватает оперативной памяти. Пришлось сделать файл подкачки.

clang-11: error: unable to execute command: Terminated
clang-11: error: linker command failed due to signal (use -v to see invocation)

Потом вылезли ошибки ld. Нашёл совет, что нужно добавить -ldl в конце linker flags. В моём случае это был второй Makefile, который создаёт Qmake в папке src, строка LFLAGS.

ld: error: undefined symbol: dlopen
ld: error: undefined symbol: dlclose
ld: error: undefined symbol: dlsym
Luser248
() автор топика
Ответ на: удаленный комментарий

миф какой-то. Хейтер чтоль?

Jetty ★★★★★
()
Ответ на: комментарий от Luser248

Бред какой-то.
Что ты пытаешься сделать? Что-то скомпилить? Опенсорц проект или копипаста со стековерфлоу?

Jetty ★★★★★
()
Ответ на: комментарий от Stil

Ну бред же говоришь. конфигур просто идеально говорит чего не хватает и что фейлится. Пожет просто опыта маловато и не понимаешь слов?

Jetty ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Мне как пользователю нравится

…пока не решите собирать на системе/дистрибутиве, сильно отличающегося от того, который использовал автор софта. Чинить файлы сборки Autotools — это ужас.

X512 ★★★★★
()
Ответ на: комментарий от Jetty

Или одно или другое :)

Сумрачные гении могли и совместить.

X512 ★★★★★
()
Ответ на: комментарий от X512

Под FreeBSD много чего собирал, но все было популярное, типа Emacs.

MOPKOBKA ★★★★
()
Ответ на: комментарий от Shadow

Я бы это в другую сторону сформулировал.

Если автотулз вдруг конфигурируется на чем-то отличном от дистра/архитектуры разраба или того, что у проекта включено в CI, это почти безошибочный признак, что либо в истории коммитов есть как минимум один не старше двух лет с заголовком .*(<fix>|autotools) .*<platform>.*, либо проект замшел до небывалой стабильности и тогда придётся прочесать последние коммитов 200, либо он прячется где-то как даунстрим-патч.

t184256 ★★★★★
()
Ответ на: комментарий от Jetty

Бред, не бред, но программу собрал. Всё работает. Это Qtractor - секвенсор для звуковых плагинов, простенькая DAW.

Luser248
() автор топика
Ответ на: комментарий от Jetty

Ну бред же говоришь. конфигур просто идеально говорит чего не хватает и что фейлится.

Давай перечитывай, фейлится не configure, а libtool.

Пожет просто опыта маловато и не понимаешь слов?

Сказал персонаж, который не отличает configure от libtool %)

Stil ★★★★★
()
Ответ на: комментарий от Stil

И да, собираю я, например, с линукс хоста шлангом+мингв64црт, чтобы запускалось на шиндоуз. Если на твоей локалхостной слаке с ровно одним тулчейном и одним набором библиотек это говно работает – рад за тебя, но о портабельности или надежности это ничего не говорит.

Stil ★★★★★
()
Ответ на: комментарий от X512

Последние лет десять только и занимаюсь что cross-compile для не-x86, для всяких arm, mipsel, sh4, и опыт показал что меньше всего проблем с autotools, а вот cmake крайне капризен.

imb ★★
()
Ответ на: комментарий от imb

cross-compile для не-x86

Тут скорее важен дистрибутив, а не процессор.

X512 ★★★★★
()
Ответ на: комментарий от Stil

да откуда он знает про твои депенданси

Jetty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.