在另一台机器上运行从clang + llvm编译的程序

时间:2012-03-26 12:03:30

标签: c linux centos llvm clang

我正在通过clang + llvm(版本3.1)编译程序并尝试在同样具有相同clang + llvm版本的计算机上运行它。我正在编译Ubuntu 10,但我试图运行的另一台计算机有CentOS 5.在CentOS中,我也遇到了通过LLVM编译的问题(编译器传递在LLVM中实现)。这就是为什么我想在Ubuntu上编译,从那里获取exe并在CentOS机器上运行它。

然而,当我尝试这样做时,我收到以下错误。

./main: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./main)
./main: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./main)

我该如何解决这个问题。请注意,我没有在该计算机上进行root访问。

3 个答案:

答案 0 :(得分:3)

一种解决方案是将库从您工作的Ubuntu机器复制到CentOS机器。放入Home / Workdir / whereever(TM)并将LD_PRELOAD变量设置为该库。但这可能非常繁琐,因为这可能不是唯一缺少的库(可能库依赖于其他库,您也需要...)。

如果两台机器具有相同的架构(例如,如果你的ubuntu机器是32位且你的CentOS 64它不会工作),这也是有效的。

答案 1 :(得分:2)

Centos 5使用旧版本的libstdc ++而不是Ubuntu 11.04或11.10,因此不能使用二进制文件。

要么在Centos 5上编译,要么找到一个可行的旧编译环境。如果您使用的是gcc,还可以调查LSB编译器环境。

答案 2 :(得分:1)

交叉编译始终是一个难题。在您的情况下,您在两台计算机上有不同的c ++库版本。如果您不需要经常这样做,我建议您尝试在CentOS上解决您的编译问题。这可能是更简单的方法。