0 / 0 / 0
Регистрация: 02.09.2016
Сообщений: 26
|
||||||
1 | ||||||
При линковке: Undefined reference to std::count09.12.2016, 19:08. Показов 2142. Ответов 6
Метки нет (Все метки)
Написал простейшую программу на c++:
Пытаюсь слинковать командой: ld kernel.o Получаю следующее: Кликните здесь для просмотра всего текста
ld: warning: cannot find entry symbol _start; defaulting to 00000000004000e8 kernel.o: In function `_start()': kernel.cpp.text+0xa): undefined reference to `std::cout' kernel.cpp.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' kernel.o: In function `__static_initialization_and_destruction_0(int, int)': kernel.cpp.text+0x39): undefined reference to `std::ios_base::Init::Init()' kernel.cpp.text+0x3e): undefined reference to `__dso_handle' kernel.cpp.text+0x48): undefined reference to `std::ios_base::Init::~Init()' kernel.cpp.text+0x4d): undefined reference to `__cxa_atexit' ld: a.out: скрытый символ «__dso_handle» не определён ld: final link failed: Некорректное значение Помогите пожалуйста исправить.
0
|
09.12.2016, 19:08 | |
Ответы с готовыми решениями:
6
Undefined reference при линковке Ошибка undefined reference при запуске программы с sfml ошибка undefined reference to undefined reference to `SQLFreeHandle' |
09.12.2016, 19:45 | 2 |
Непонятно, ради чего линкер запускать ручками. Чем "g++ kernel.o" не устраивает? Ради интереса запусти "g++ kernel.o -v", в печати увидишь строку запуска линкера. Если прям позарез надо запускать ld, то запускать надо примерно так
0
|
0 / 0 / 0
Регистрация: 02.09.2016
Сообщений: 26
|
|
09.12.2016, 20:12 [ТС] | 3 |
Просто мне нужно слинковать файл с c++ и файл с assembler'ом. Компилируется все нормально но при линковке ld ругается.
P. S. Я не понял как примерно нужно запускать (ощущение что ответ не дописан)
0
|
0 / 0 / 0
Регистрация: 02.09.2016
Сообщений: 26
|
|
09.12.2016, 20:30 [ТС] | 5 |
Вы не поняли у меня есть два файла loader.asm и kernel.cpp я их компилирую в объектные файлы получается loader.o и kernel.o после этого мне нужно скомпоновать с помощью ld. С помощью g++ я их никак не скомпоную.
Я у вас спрашиваю как с помощью ld их "запускать надо примерно так", а вы мне отвечаете как компоновать g++'ом.
0
|
09.12.2016, 20:36 | 6 |
Я тебя спрашиваю зачем тебе ld, ты игнорируешь
Тебе - никак. Потому что ты себе слабо представляешь, что такое процесс линковки. Могу объяснить ещё раз. Для примера из самого первого поста запусти Код
g++ kernel.o -v Весь мир компонует, а ты, судя по всему, и вправду не скомпонуешь
1
|
0 / 0 / 0
Регистрация: 02.09.2016
Сообщений: 26
|
|
09.12.2016, 20:42 [ТС] | 7 |
Ладно. Спасибо за помощь.
0
|
09.12.2016, 20:42 | |
09.12.2016, 20:42 | |
Помогаю со студенческими работами здесь
7
Undefined reference to `operator new[](unsigned int)' Undefined reference в template (Code::Blocks) Почему происходит ошибка undefined reference to hgeCreate main.cpp:37: undefined reference to `NMEAParser::ParserBuffer(unsigned char*) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |