从运行铛+ LLVM另一台机器

问题描述:

我编译程序通过铛+ LLVM(3.1版),并试图也有同样的铛+ LLVM版本的计算机上运行它在编译的程序。我在Ubuntu 10上编译,但是我试图运行的其他计算机上有CentOS 5.在CentOS中,我也遇到了通过LLVM编译的问题(编译器通道在LLVM中实现)。这就是为什么我想在Ubuntu上进行编译,从那里取出exe,然后在CentOS机器上运行它。从运行铛+ LLVM另一台机器

但是,当我尝试这样做时,出现以下错误。

./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访问。

一个解决办法是从您的工作Ubuntu机库复制到你的CentOS机器。放入你的Home/Workdir/whereever(TM)并将LD_PRELOAD变量设置为该库。但是这可能非常乏味,因为这可能不是唯一缺失的库(也许库依赖于其他库,您还需要...)。

如果两台机器都具有相同的体系结构(例如,如果您的Ubuntu机器是32位和CentOS 64,则它不工作)。

+0

LD_PRELOAD已经做到了。真棒! – pythonic 2012-03-26 14:14:15

+0

我想到的另一个选择是编译静态程序(即包含所有必需的库函数)。 – flolo 2012-03-27 05:46:04

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

+0

是的。 GCC是一个编译器套件,因此它带有一个C++和一个c编译器。由于您的C++库不匹配,您的c库也不会。 – Azrael3000 2012-03-26 12:41:58

Centos 5使用比Ubuntu 11.04或11.10更旧版本的libstdC++,因此无法使用二进制文件。

无论是在CentOS 5编译,或者发现不工作旧的编译环境。如果您使用的是gcc,您也可以调查LSB编译器环境。