Я пытаюсь связать вывод С++ с помощью ld, а не g++. Я только делаю это, чтобы узнать, как это сделать, а не для практических целей, поэтому, пожалуйста, не предлагайте просто делать это с помощью g++.
Рассматривая этот вопрос, человек получает ту же ошибку, когда они запускают команду ld:
$ ld test.o -o test.out
ld: warning: cannot find entry symbol _start; defaulting to 00000000004000e8
test.o: In function `main':
test.cpp:(.text+0x1c): undefined reference to `strcasecmp'
test.cpp:(.text+0x23): undefined reference to `std::cout'
test.cpp:(.text+0x28): undefined reference to `std::ostream::operator<<(int)'
test.cpp:(.text+0x2d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
test.cpp:(.text+0x35): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
test.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cpp:(.text+0x75): undefined reference to `std::ios_base::Init::Init()'
test.cpp:(.text+0x7a): undefined reference to `__dso_handle'
test.cpp:(.text+0x84): undefined reference to `std::ios_base::Init::~Init()'
test.cpp:(.text+0x89): undefined reference to `__cxa_atexit'
ld: test.out: hidden symbol `__dso_handle' isn't defined
ld: final link failed: Bad value
Ответы в связанном сообщении предполагают, что добавление библиотеки С++ в качестве аргумента компоновщика устранит проблему, поэтому я попробовал
ld test.o -o test.out -llibstd++
что они предложили, и я также попробовал много других имен библиотек, таких как libstdС++ или stdС++. Но я всегда получаю ошибку, которая выглядит как
ld: cannot find -llibstd++
Что я делаю неправильно и как я могу связать свои объектные файлы с помощью ld?