LINUX.ORG.RU

Помогите лузеру с C++.

 


0

1

Изучаю C++. Нужна помощь со сборкой этого учебного примера.

Компиляю strlib.cpp

g++ -c strlib.cpp error.cpp
g++ test.cpp

Получаю

/home/trupanka/.local/tmp/ccEZlEla.o: In function `main':
test.cpp:(.text+0x3d): undefined reference to `integerToString[abi:cxx11](int)'
collect2: error: ld returned 1 exit status

Версия gcc - 5.2

Ну не знаю, наверное в test.cpp ошибка.

anonymous
()

Компилируй отдельно, линкуй отдельно. Поймёшь, в чём твоя ошибка.

d ★★★★
()

пожалуйста, оставь c++. используй жаву, учи лисп. с++ тебе не нужен, поверь

anonymous
()

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

trupanka
() автор топика
g++ -c strlib.cpp -o strlib.o
g++ -c error.cpp -o error.o
g++ -c test.cpp -o test.o
g++ strlib.o error.o test.o -o test

А вообще, C++ и Java не стоит учить, возьми лучше Go.

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

C++ как-нибудь освою.

одна из главных проблем C++ (помимо самого С++), это то, что его очень многие осваивают как-нибудь

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

4 команды чтобы скомпилять 3 файла

По принципу Дирихле, один из файлов компилируется дважды.

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

Автор сам ССЗБ, раз не использует Make.

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

А вообще, C++ и Java не стоит учить, возьми лучше Go.

Помогите лузеру

Пусть учит.

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

Ну там типа сначала компилируется в байт-код без оптимизаций, а потом берется весь байт-код, применяются оптимизации и типа получается бинарник. Такое вот какое-то у меня представление об этом, не знаю как на самом деле. Я с ним только blender компиляю.

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

Зачем тебе С++, если пишешь для себя? Высокой скорости, выучив как-нибудь ты все равно не добьешься, о проблемы с адресацией памяти будешь часто спотыкаться, оно тебе надо? ИМХО применять С++ чисто в своих поделках это как электронным микроскопом пытаться мелкие надписи разглядеть.

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

В С++ и С нет байт-кода, а формируется объектный файл и объектный код, если речь не идет о LLVM,если мне память не изменяет

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

Изначально нужно было для того, чтобы понимать почему не собираются программы у меня в генте.

Конкретно ошибка с моей проблемой была в том, что оказывается порядок исходников важен, а в моей книжке по C++ об этом не писали. Просто я тему не правильно создал (с другой ошибкой).

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

как-нибудь

Вся суть среднестатистической разработки на крестах. А потом аппараты лучевой терапии людей калечат и ракеты падают.

cherry-pick
()
Ответ на: комментарий от trupanka

и правильно! а то еще, не дай бог, начнут летать и работать... :)

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

Насколько я помню, gcc для LTO в объектник записывает своё внутреннее представление исходного кода, с помощью которого и выполняет потом «дооптимизацию». Так что в некотором смысле всё же байт-код. LLVM бы записывал как раз свой биткод.

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

Изначально нужно было для того, чтобы понимать почему не собираются программы у меня в генте.

В этом случае лучше отправить хороший баг-репорт.

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

Может быть, но зачем мне ждать кого-то, если я смогу решить проблему сам. Мне никто ничего не должен в багзилле генты.

А еще я пользуюсь программами, на которые забил сам автор. Куда слать баг-репорт в таком случае? Это риторический вопрос. Зачем мне испытывать неудобства, когда очередной пакет не соберется с новым glibc или ncurses?

А так я и phantomJS себе поправил, чтобы собрался с системным qt (баг в генте есть, а решения там что-то не предвидится, а aria[разработчик] не рекомендует собирать так, хоть и возможность такую обеспечил), и glibc-2.22 под харденед скомпилял (с тем патчем, что сейчас есть у меня не собралось). Зарепортить боюсь правда. Думаю, люди поумнее в генте знают о проблеме. А если ее нет, то я помог сам себе.

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

glibc-2.22 под харденед скомпилял

Правда откатился не без проблем. Потому что csound не собрался. Эту проблему я оставил на потом, потому что с моим текущим скиллом в C++, это заняло бы много времени.

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

одна из главных проблем C++ (помимо самого С++), это то, что его очень многие осваивают как-нибудь

Да, это немалая проблема - писать одновременно краткий и понятный код. Учитывая отличие стандарта С++11 от предыдущих, голова начинает идти кругом от всяких новых возможностей. Неудивительно, что до конца освоить новый (ну как новый...) стандарт терпения хватает не у всех, особенно - понять, когда эти нововведения полезны, а когда - нет.

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

особенно - понять, когда эти нововведения полезны, а когда - нет.

Любопытно какие именно нововведения ты считаешь вредными.

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

Иначе не распараллелить, не?

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