码头化的C++应用程序是否向后兼容早期的内核版本
Are dockerized C++ applications backwards compatible to earlier kernel versions?
假设我有一个C++应用程序在docker容器中运行,使用现代linux发行版(Ubuntu 19.10(以及GCC和linux内核的相关版本。容器本身托管在Ubuntu 19.10上。
我在容器中构建我的应用程序,并静态链接我的所有依赖项,除了系统提供的依赖项,即libc++、libc等。这些依赖项来自底层Docker映像中捆绑的依赖项。据我的应用程序所知,它存在于Ubuntu 19.10中。
然后,我继续在一个旧得多的Linux内核上部署包含我的应用程序二进制文件的Docker映像(比如说无论CentOS 6在使用什么(。
这样做是否存在不兼容(ABI或其他(的风险?
是的,存在风险。您需要检查libc
需求,看看它支持什么内核版本。对于大多数软件来说,libc
通常是通往内核的网关,除了一些它自己实现系统调用的语言。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- CUDA内核和数学函数的显式命名空间
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- FindResource的内核模式版本
- 在我的Linux中调用了哪个版本的close(),来自posix lib或内核
- 基于内核版本 X.XX 构建的 C++ Linux 应用是否会在早期版本上运行
- OpenCL:x86 和 x64 版本的不同工作内核代码
- 如何使用linux系统调用编写一个c++程序,该调用提供有关可用内存、已用内存和内核版本的输出
- 如何将 C/C++ 应用程序移植到旧版 Linux 内核版本
- C/ c++ Cyanogenmod如何使用不同版本的工具链编译内核
- 预测 2.6.16 和 2.6.26 内核版本之间的"kernel too old"错误
- Julia集的CUDA内核与CPU版本相比性能较慢