一次系统兼容性问题解决过程记录


前言

今天在一个centos7.9 的系统下移植一个之前在yocto 下的http web程序,这个程序在解决字符转换的问题之前用的是 C++ 标准库中的一个模板类codecvt ,之前在yocto 和ubuntu18.04和win10 VS2019下都运行正常,在centos7.9 下出现了问题,经过分析查找,发现是由于centos7.9 默认GCC 版本(4.8.5)过低造成的, 由于这个centos7.9上已经有一些程序和编译环境,如果升级怕对其它的环境产生影响,本文在不改编译环境的基础上(即升级GCC版本)解决这个问题,记录下过程,供以后参考。


一、问题描述

之前在其它系统下正确运行的代码在新的centos7.9环境下编译出现了如下问题:
在这里插入图片描述

二、编译脚本修改

2.1 原来编译脚本

include ../template.mk
LIBNAME=itap.http_webserver
CPPPATH=.
cflags = -Wall -g3 -pthread -D_DEBUG -D_LINUX
cflags +=-I../../depend/include -I../../include

libpath+=-L../../$(CompileResult)
libpath+=-L../../depend/lib
libpath+=-L../../depend/lib/libmodbus

#特性动态库
libs+=-litap.vos -litap.log -litap.utils 
libs+=-ldl -litap.netsdk
libs+=-litap.sqlite

${
   LIBNAME}:
		${
   CC} -std=c++14 -o ${
   LIBNAME} ${
   cflags} ${
   CPPPATH}/*.cpp ${libpath} ${libs}  
		cp ${LIBNAME} ../../$(CompileResult)/
		cp ${LIBNAME} ../../HttpWeb/
		
clean:
		rm -rf *.o *.so
		rm -rf ${LIBNAME}

2.2 修改后编译脚本

修改后的脚本文件如下:

include ../template.mk
LIBNAME=itap.http_webserver

# 检测操作系统
UNAME_S := $(shell uname -s)

# 根据不同系统设置编译选项
ifeq ($(UNAME_S), Linux)
    # 检查是否为 CentOS 7.x
    CENTOS_VERSION :
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值