关于g++静态编译的疑问?
由于需要将服务器程序移植到 Linux平台,安装了最新版本ubuntu linux [64bit] ,和 主流的服务器平台centos,代码移植编译测试本身很 顺利,没遇到bug, 但是 有 个疑问一直没有想通,
因为需要支持多个Linux发行版,最简单的 办法就是静态编译,先后在ubuntu linux ,centos下分别进行编译,centos下得到的可执行程序大小为1.4MB, centos linux 核心 3.10.0-862.6.3.e17.x86_64 g++版本: 4.8.5-28 ,
同样的编译参数 在ubuntu linux下得到可执行文件大小为3.8MB,ubuntu linx 核心;4.15.0-23 g++版本 7.3.0
这差距实在是太大了,足足一倍多,
我使用ubuntu linux下编译出来的 可执行服务器程序,在 centos下运行没有任何问题,全兼容
使用centos下编译出来的可执行服务器程序,在 ubuntu下 运行也 同样没有任何问题,全兼容
使用file 指令分析可 执行文件 ,
ubuntu 下可执行文件 头提示: for GNU/Linux 3.2.0
Centos下可 执行文件 头提示: for GNU/Linux 2.6.32
但事实是,无论是那个,都可以完美运行在其他平台,哪怕核心版本不如文件头要求的版本
另外请教,有没有宏或参数可以在 g++ 编译中 指定 Linux 内核版本, 否则glibc等打包进来的 东西太大了