Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166

Не правильная работа makefile

27.02.2014, 12:33. Показов 2383. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, создаю для сборки программы makefile с таким содержанием:
Bash
1
2
compile:
    g++ -fPIC -c /home/kobaeugenea/project/cprogram.cpp -o /home/kobaeugenea/project/cprogram.o
В терминале два раза подряд ввожу комнаду:
make -f /home/kobaeugenea/project/makefile compile
Первый раз всё проходит нормально, на второй выдаётся такая ошибка, а makefile удаляется:
Кликните здесь для просмотра всего текста
cc /home/kobaeugenea/project/cprogram.o -o /home/kobaeugenea/project/cprogram
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 2 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 3 has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 4 has invalid symbol index 11
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 5 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 6 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 7 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 8 has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 9 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 10 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 11 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 12 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 13 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 14 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 15 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 16 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 17 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 18 has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 19 has invalid symbol index 21
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
/home/kobaeugenea/project/cprogram.o: In function `sost(int, treug*)':
cprogram.cpp.text+0x3e): undefined reference to `operator new[](unsigned long)'
cprogram.cpp.text+0x95): undefined reference to `operator new[](unsigned long)'
/home/kobaeugenea/project/cprogram.o: In function `clear(treug*)':
cprogram.cpp.text+0x2b3): undefined reference to `operator delete[](void*)'
cprogram.cpp.text+0x2df): undefined reference to `operator delete[](void*)'
cprogram.cpp.text+0x2eb): undefined reference to `operator delete(void*)'
collect2: error: ld returned 1 exit status
make: *** [/home/kobaeugenea/project/cprogram] Error 1

По команде сс в первой строке, я так понимаю, он пытается компилировать программу через gcc, а не через g++? Да и ошибки в операторах new и delete, которых нету в С. Кто может объяснить почему так происходит, и почему первый раз все компилируется нормально? g++ установлен. Если заново создать makefile и запустить его дважды, всё также. Первый раз нормально, затем ошибка. Система - Ubuntu 13.10.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2014, 12:33
Ответы с готовыми решениями:

При запуске Makefile выдается ошибка "Makefile:2: recipe for target 'all' failed"
решила поучиться собирать проекты через мэйкфайлы. Пожалуйста, помогите разобраться all: g++ main.cpp -o philBlock.o ...

Работа в Makefile
Здравствуйте! Кто сталкивался с такими вот строчками: ## Compyte options sommon for all C sompytation units. CFLAGS = $(COMMON) ...

Работа с Makefile ом
Добрый вечер. Подскажите как написать makefile что бы из него запустить другой Makefile из другой папки.?

18
128 / 126 / 60
Регистрация: 22.01.2014
Сообщений: 464
27.02.2014, 17:48
Это у вас ошибка при сборке. Ответы на вопросы думаю лучше искать в вашем makefile.
Можете попытаться вручную собрать, с коммандной строки.
g++ -o /home/kobaeugenea/project/cprogram /home/kobaeugenea/project/cprogram.o -lstdc++
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
27.02.2014, 17:53  [ТС]
С терминала нормально собирается той командой, что в makefile.
0
128 / 126 / 60
Регистрация: 22.01.2014
Сообщений: 464
27.02.2014, 18:07
Цитата Сообщение от KobaEugeneA Посмотреть сообщение
g++ -fPIC -c /home/kobaeugenea/project/cprogram.cpp -o /home/kobaeugenea/project/cprogram.o
Насколько я понимаю здесь опция -c стоит, то есть только компиляция, не сборка.Сборку(link) в вашем makefile я не вижу.
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 06:33  [ТС]
Цитата Сообщение от nikolay1982 Посмотреть сообщение
Насколько я понимаю здесь опция -c стоит, то есть только компиляция, не сборка.Сборку(link) в вашем makefile я не вижу
Я неверно выразился. Да, там идёт только компиляция. Вы тоже наверное не совсем поняли всю суть проблемы. Это весь makefile, в нем больше нечего нету. Он на первый раз нормально компилирует, а когда пытаюсь второй раз откомпилировать (перекомпилировать) происходит то, что я описал в первом посте.
P. S. Команды для сборки в makefile вообще нету. Я не понимаю откуда в терминале берётся строчка:
cc /home/kobaeugenea/project/cprogram.o -o /home/kobaeugenea/project/cprogram
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2014, 08:48
Цитата Сообщение от KobaEugeneA Посмотреть сообщение
Я не понимаю откуда в терминале берётся строчка:
cc /home/kobaeugenea/project/cprogram.o -o /home/kobaeugenea/project/cprogram
Похоже на то, что make построил неявное правило

На всякий случай идиотский вопрос: первый символ во второй строке точно является знаком табуляции?
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 08:52  [ТС]
Да, табуляция.
0
128 / 126 / 60
Регистрация: 22.01.2014
Сообщений: 464
28.02.2014, 10:40
Пробуйте так:
Bash
1
2
3
4
5
6
all: /home/kobaeugenea/project/cprogram
 
/home/kobaeugenea/project/cprogram.o:
    g++ -fPIC -c /home/kobaeugenea/project/cprogram.cpp -o /home/kobaeugenea/project/cprogram.o
/home/kobaeugenea/project/cprogram: /home/kobaeugenea/project/cprogram.o
    g++  /home/kobaeugenea/project/cprogram.o -o /home/kobaeugenea/project/cprogram
cc(gcc) похоже вызывается в недрах make. но его нельзя для линковки С без libstdc++, если у вас С++ проект.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2014, 11:11
Я так и не смог у себя воспроизвести проблему

1. Покажи версию (выдача по "make -v")
2. Покажи выдачу по "ls -l" в текущем каталоге
3. Покажи, как запускаешь make: это просто "make" или с какими-то дополнительными параметрами
4. Покажи выдачу "uname -a"
5. Покажи выдачу "g++ -v"

Добавлено через 22 секунды
Воспроизвёл. Ты запускаешь "make cprogram"?
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 11:32  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Воспроизвёл. Ты запускаешь "make cprogram"?
make -f /home/kobaeugenea/project/cprogram compile
Так запускаю. На остальные вопросы ответить не могу сейчас, компьютера под рукой нету.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2014, 11:58
Цитата Сообщение от KobaEugeneA Посмотреть сообщение
make -f /home/kobaeugenea/project/cprogram compile
К выделенному жирным ещё не хватает "/Makefile". Это просто опечатка или ты реально так запускал? Во втором случае это могло привести к изначальной проблеме
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 13:31  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
К выделенному жирным ещё не хватает "/Makefile". Это просто опечатка или ты реально так запускал? Во втором случае это могло привести к изначальной проблеме
Да я уже 10 раз все переправил. Короче, на данный момент у меня в папке "/home/kobaeugenea/project/" есть makefile с названием "cprogram". Содержание у него не изменилось. Запускаю в терминале командой:
make -f /home/kobaeugenea/project/cprogram compile
Ошибка та же.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2014, 13:37
Цитата Сообщение от KobaEugeneA Посмотреть сообщение
make -f /home/kobaeugenea/project/cprogram compile
А надо

make -f /home/kobaeugenea/project/cprogram/makefile compile
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 13:39  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
А надо
make -f /home/kobaeugenea/project/cprogram/makefile compile
Нет, не из-за этого. Сейчас вот решил проблему. Надо было запускать с параметром -r, которые отменяет все неявные правила, то есть:
make -r -f /home/kobaeugenea/project/cprogram compile
Так всё отлично работает. Спасибо, что намекнули про неявные правила, сам бы наверно долго промучился.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2014, 14:18
Вот это что за бред "-f /home/kobaeugenea/project/cprogram"?
Опция -f должна указывать на makefile, а она у тебя указывает на хз что. Т.е. по сути make запускается на пустом месте
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 14:20  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Вот это что за бред "-f /home/kobaeugenea/project/cprogram"?
Опция -f должна указывать на makefile, а она у тебя указывает на хз что. Т.е. по сути make запускается на пустом месте
Я же говорю makefile называется "cprogram". Т. е. всё правильно, путь оказывает на malefile. Это не папка, это название makefile.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.02.2014, 14:34
Ты сказал "есть makefile с названием cprogram". Тогда уж правильно надо было говорить "есть файл с названием cprogram". И именно в названии файла проблема. Я во всяком случае так сумел воспроизвести. Не очень понимаю, зачем нужно было таким образом иметь проблему на ровном месте из ничего - но, как говорится, хозяин - барин
0
6 / 6 / 2
Регистрация: 16.01.2011
Сообщений: 166
28.02.2014, 14:43  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Не очень понимаю, зачем нужно было таким образом иметь проблему на ровном месте из ничего - но, как говорится, хозяин - барин
Не знал про то, что существуют неявные правила.
0
128 / 126 / 60
Регистрация: 22.01.2014
Сообщений: 464
28.02.2014, 16:39
Если makefile является "cprogram" то нечего удивляется, если сборщик его удаляется, для сборки "cprogram".
Воспользуйся моим makefile, который я указал в прошлый раз.
сохрани его в /home/kobaeugenea/project/makefile.

make -f /home/kobaeugenea/project/makefile

и все должно работать
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.02.2014, 16:39
Помогаю со студенческими работами здесь

Make, makefile, simple makefile, hello_world
Всем привет! Разбираюсь с мэйк-файлами. Проблема следующая: не понятен сам принцип обработки целей. Сейчас я понимаю это...

Правильная работа с БД
и постоянно встречаю сто после запроса соединение надо закрывать как тут например: mysql_query("CREATE TABLE _myTable ( id...

Правильная работа с БД
У меня есть небольшое приложение в котором реализованы функции выборки данных из БД (select ...), изменение записи (update ...) и сейчас...

Правильная работа форума
Здравствуйте. В этой теме никаких кодов и т.д писать не буду. Инетерсует помощь именно так сказать в алгоримте действий. На данный...

Не правильная работа preloader
на сайте есть preloader jquery на сайте подключен 3.2.1 версия html в начале страницы: <div class="preloader"> ...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД 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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru