我正在通过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)
我该如何解决这个问题。 请注意,我没有在该机器上的根访问。
一种解决方案是将你的工作Ubuntu机器库拷贝到你的CentOS机器上。 把你的家庭/ Workdir / whereever(TM)和你的LD_PRELOAD变量设置为该库。 但是,这可能是非常乏味的,因为这可能不是唯一缺少的库(也许库依赖于其他库,您还需要…)。
如果两台机器都具有相同的体系结构(例如,如果你的Ubuntu机器是32位的,而你的CentOS 64不行的话),这也只能起作用。
CentOS 5使用比Ubuntu 11.04或11.10更早版本的libstdc ++,所以不能使用二进制文件。
要么在Centos 5上编译,要么找到能工作的较旧的编译环境。 如果您使用的是gcc,您也可以调查LSB编译器环境。
交叉编译总是一个难题。 在你的情况下,你在这两台机器上有不同的c ++库版本。 如果你不需要经常这样做,我建议你在CentOS上尝试解决你的编译问题。 这可能是更简单的方法。