本人就读软件工程专业,现研二,通过阿里云官网了解到“飞天加速计划·高校学生在家实践”活动。
因课题组需要整合sprinboot项目与c++项目,因此在centos服务器上对项目进行整合测试。针对几个让我记忆深刻的问题进行复盘。
1. 对项目必要的环境进行安装,如java,tomcat,mysql。登陆阿里云控制台,在云服务器esc中有我的教程,可以参考这些教程对环境进行安装。
2. 因同课题组的同学测试时是在版本交新的ubuntu系统上进行测试的,因此在整合c++项目过程中,需要如下问题:
- cmake 未安装或者安装版本过低(项目要求3.20以上的版本)
解决方案:
wget-c https://github.com/Kitware/CMake/releases/download/v3.17.0-rc3/cmake-3.17.0-rc3.tar.gz tar zxvf cmake-3.17.0-rc3.tar.gz cd cmake-3.17.0-rc3./bootstrap gmake #时间会比较长gmake install cmake --version#版本查看
- 编译时内存不足的问题 c++: internal compiler error: Killed (program cc1plus)
解决方案:
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=2048MBsudo dd if=/dev/zero of=/swapfile bs=64M count=32#把刚才空间格式化成swap格式sudo mkswap /swapfile chmod0600 /swapfile #使用刚才创建的swap空间sudo swapon /swapfile #查看交换空间的使用情况free -m#释放空间命令swapoff -a
在编译过程中也遇到了需要严格按照c标准的问题。如sprinf_s(), _strdup()等函数,若有编译时会出错,可以考虑使用c函数或者指定 -std=gun11。
- 编译结束之后,测试接口时发现/usr/lib64/libm.so.6: version `GLIBC_2.29' not found问题
解决方案:安装glibc_2.29
wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz tar -zxvf glibc-2.29.tar.gz cd glibc-2.29 mkdir build cd build # 指定路径,不要与解压的路径相同,避免出现/usr/bin/install: `include/limits.h' and `/opt/glibc-2.14/include/limits.h' are the same file 这个错误../configure --prefix=/opt/glibc229 makemake install
- 整个过程中,也复习了一部分linux命令,如下:
# find 命令用来在指定目录下查找文件。# 列出当前目录下后缀为c的所有文件find . -name"*.c"# 查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:find / -type f -size0-execls-l {} \; #strings 命令是二进制工具集 GNU Binutils 的一员,用于打印文件中可打印字符串,strings命令在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。strings命令对识别随机对象文件很有用。# 查看glibc支持的版本strings /lib64/libc.so.6 | grep GLIBC ssh root@IP scp localSrc root@IP:remoteDest rm-rf dir cp-r src dest
以上就是在部署过程中遇到的一些问题。
此次部署以及过程中遇到的一些问题,个人感触颇深的是对操作系统要有一个深刻的理解,尤其是对linux的内核的一些原理。(看来是时候在重新过一遍操作系统了-_-!)。对linux中的命令,用进废退:(,该项目维护中,需要对linux命令多加实践操作,从而熟悉命令。
最重要的事:日志与备份极其重要。日志与备份极其重要。日志与备份极其重要。重要的事情说三遍((。ì _ í。)
