问题描述
rust代码在Ubuntu系统编译(cargo build --release)后,将编译好的程序放到centos系统上运行提示
/lib64/libc.so.6: version `GLIBC_2.18' not found
这是由于在Ubuntu系统上编译时链接了共享库libc2.18,但是centos系统上最高版本为2.17。对于这种情况,一般有两种方法。
解决方案
一种是在centos上安装2.18版本库
太麻烦,所以我选择了第二种方法
第二种方法是将程序用的库以静态链接方式打包到程序里,
编译命令如下:
RUSTFLAGS='-C target-feature=+crt-static' cargo build --release --target=x86_64-unknown-linux-gnu
上述编译完成后,查看二进制文件的大小,是比直接build要大的。