peo*_*oro 37 c++ linux portability glibc
如果我在我的机器上编译C++程序,并在另一台机器上运行它(使用较旧的软件),我得到:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found.
实际上在我的系统上glibc更新(我得到了gcc-libs 4.5.1:libstdc ++.so.6.0.14)并strings /usr/lib/libstdc++.so.6 | grep GLIBCXX从中打印GLIBCXX_3.4到GLIBCXX_3.4.14.相反,在另一个系统上,它只打印到GLIBCXX_3.4.8(我得到了libstdc ++.so.6.0.8).
所以我有几个问题:
为什么我的链接器将c ++二进制文件链接到libstdc ++版本GLIBCXX_3.4.9而不是GLIBCXX_3.4.14?
如果我对libstdc ++版本编译我的二进制文件,GLIBCXX_3.4我想它几乎可以在任何地方运行.这会暗示任何问题吗?(例如:它会使用较旧的 - 因此更糟糕的算法实现吗?)
相反,我将我的程序静态链接到我的libstdc ++,我想它会在任何地方运行; 当然,二进制文件会更大(~1MB),任何其他优点/缺点?
我可以强制链接器将我的二进制文件链接到给定版本的libstdc ++吗?
| 归档时间: |
|
| 查看次数: |
37139 次 |
| 最近记录: |