我使用上面提到的配置在编译机器上编译了下面的代码。汇编成功了。但是在执行时遇到了上述错误 ldd -r my_executable
#include <iostream>
#include <list>
using namespace std;
int main()
{
list<int> mylist;
mylist.push_back(1);
mylist.push_back(2);
mylist.push_back(3);
cout << "\nList:\n";
for(list<int>::iterator it = mylist.begin(); it != mylist.end(); it++)
{
cout << *it << "\n";
}
}
编译机器详细信息: glibc版本2.14.1 libstdc ++版本GLIBCXX_3.4.16 (运行命令后输出:strings /usr/lib/libstdc++.so.6 | grep LIBCXX)
目标机器详细信息: glibc版本2.12.90 libstdc ++版本GLIBCXX_3.4.14 (运行命令后输出:strings /usr/lib/libstdc++.so.6 | grep LIBCXX)
答案 0 :(得分:1)
您已经在具有一个GCC版本的计算机上构建了程序,因此您的程序依赖于该版本GCC的共享库,然后您尝试在具有旧版GCC的计算机上运行它,没有必要的共享库。
StackOverflow上已有数百个答案。最简单的答案是在目标机器上构建程序,因此它使用目标机器上存在的GCC版本构建。