& std::operator >(std::basic_o-6ren">
gpt4 book ai didi

c++ - 仅使用 g++ 有效,但不能使用 "g++ -c"和 ld

转载 作者:可可西里 更新时间:2023-11-01 15:34:20 34 4
gpt4 key购买 nike

我在 main.cpp 中有以下源代码:

#include <iostream>
#include <iomanip>

int main() {
std::cout << "Hi" << std::endl;
return 0;
}

使用此命令有效,并创建可执行文件:

g++ -o main main.cpp

但是这个命令不起作用:

g++ -c main.cpp
ld -o main main.o

第二个错误:

ld: warning: cannot find entry symbol _start; defaulting to 00000000004000e8
main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.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*)'
main.cpp:(.text+0x14): 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> >&)'
main.cpp:(.text+0x1c): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
main.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4f): undefined reference to `std::ios_base::Init::~Init()'
main.cpp:(.text+0x54): undefined reference to `__dso_handle'
main.cpp:(.text+0x61): undefined reference to `__cxa_atexit'

最佳答案

我认为如果您直接使用 ld,默认情况下它不会包含 C++ 库。您也可以使用 g++ 进行链接,它将使用正确的设置调用 ld

g++ -c main.cpp
g++ -o main main.o

关于c++ - 仅使用 g++ 有效,但不能使用 "g++ -c"和 ld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6704780/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com