ld:无效版本 3(最大 0)- 添加符号时出错:错误值
ld: Invalid version 3 (max 0) - error adding symbols: Bad value
我正在使用 g++ 9.2.1 和 binutils 2.34。我正在 运行ning Manjaro 19.0.2 与 linux 内核 5.4.23-1。一切都来自我刚刚安装的全新 Manjaro,我认为它可以解决问题。
编译以下超级简单的程序时:
#include <iostream>
int main()
{
std::cout << "Hello" << std::endl;
return 0;
}
如果我 运行 g++ main.cpp -o program
,一切都很好,我在执行 ./program 时得到 Hello。
但是,当我 运行 g++ main.cpp -o main.o 时,它起作用了,但是当我 运行 g++ main.o -o 程序时,我收到以下错误:
/usr/bin/ld: main.o: _ZSt4cout: invalid version 3 (max 0)
/usr/bin/ld : main.o : error adding symbols: bad value
collect2: error: ld return 1 exit status
我完全不知道它是从哪里来的。
g++ main.cpp -o main.o
不生成可重定位目标文件。输出是一个可执行文件。这样的文件不能用于进一步 linking。
要生成目标文件,请改用 g++ -c main.cpp -o main.o
。 -c
标志指示 GCC 不要 link 最终的可执行文件。
-o 用于为编译后的文件保存一个名字,例如g++ -o xyz xyz.cpp
这里 xyz 是编译文件的名称。
main.o 更改了编译文件渲染错误的幻数而不是只保留主
g++ -o main main.cpp
这应该没有问题
我正在使用 g++ 9.2.1 和 binutils 2.34。我正在 运行ning Manjaro 19.0.2 与 linux 内核 5.4.23-1。一切都来自我刚刚安装的全新 Manjaro,我认为它可以解决问题。
编译以下超级简单的程序时:
#include <iostream>
int main()
{
std::cout << "Hello" << std::endl;
return 0;
}
如果我 运行 g++ main.cpp -o program
,一切都很好,我在执行 ./program 时得到 Hello。
但是,当我 运行 g++ main.cpp -o main.o 时,它起作用了,但是当我 运行 g++ main.o -o 程序时,我收到以下错误:
/usr/bin/ld: main.o: _ZSt4cout: invalid version 3 (max 0)
/usr/bin/ld : main.o : error adding symbols: bad value
collect2: error: ld return 1 exit status
我完全不知道它是从哪里来的。
g++ main.cpp -o main.o
不生成可重定位目标文件。输出是一个可执行文件。这样的文件不能用于进一步 linking。
要生成目标文件,请改用 g++ -c main.cpp -o main.o
。 -c
标志指示 GCC 不要 link 最终的可执行文件。
-o 用于为编译后的文件保存一个名字,例如g++ -o xyz xyz.cpp 这里 xyz 是编译文件的名称。 main.o 更改了编译文件渲染错误的幻数而不是只保留主
g++ -o main main.cpp
这应该没有问题