我正在尝试将我的应用程序从开发环境部署到用户的计算机,但我遇到了一些问题。
首先,我在我的开发计算机上编译并运行它(更高版本Ubuntu11.04):
Ubuntu11.04$ make
Ubuntu11.04$ ./MyApp
Program runs okay.
然后我将二进制文件MyApp
复制到两个较低版本的计算机(用户计算机):
Ubuntu10.04$ ./MyApp
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./MyApp)
Ubuntu8.04$ ./MyApp
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./MyApp)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./MyApp)
但是,如果我在Ubuntu10.04上编译源代码并运行它:
Ubuntu10.04$ make
Ubuntu10.04$ ./MyApp
Program runs okay.
我该怎么办?当我在开发环境中编译它时,如何设置使用的库的版本号?我不是直接使用GLIBCXX,我认为它在我的项目中隐式使用。
百万。
彼得
答案 0 :(得分:1)
您看到了Link with an older version of libstdc++
吗?我从来没有安装过旧版本的g ++,但是我已经包含了一个libstdc ++。所以在我的版本中,这对我有用。我见过的最佳解决方案是让你的开发工作在最古老的系统上工作。我们在Red Hat 9上编译了一些东西,它可以解决所有问题,但是如你所说,它可能是在旧机器上构建的任何重大问题。
答案 1 :(得分:0)
您已在版本N上构建,并尝试在版本M上部署,M 请记住,Ubuntu / Debian社区已针对开源进行了优化。从他们的角度来看,解决方案是让您使用auto *工具分发源代码,并让用户为他或她自己构建它。他们不会熬夜,这对你来说很容易。 在这个关闭源的邪恶世界中,我们保留了运行各种旧Linux发行版的虚拟机,以便我们可以构建一个在许多地方运行的单个二进制文件。