有一台比较老的编译服务器,近期需要使用上面部署的一个编译环境,工作服务器可以通过ssh连接到编译服务器,且工作服务器和编译服务器挂载了相同的工作目录。
1. 解决方案
- 在工作服务器编写代码,使用ssh远程编译
# 清除并编译,编译信息会在工作服务器的终端打印,就像在工作服务器编译一样
ssh xflm@compile.sw.com "cd $PWD; make clean; make"
- 编译服务器时间经常错乱,使得和工作服务器不一致,make检索文件时会报时间警告
参考编译make工具重新编译一个make放到编译服务器下使用。 - 使用编译服务器的终端编译时打印的日志有颜色,但是工作服务器远程编译时没有
gcc有一个颜色控制的的参数-fdiagnostics-color
,默认为-fdiagnostics-color=auto
即当输出重定向时gcc不会输出颜色,修改为-fdiagnostics-color=always
即可。可以在Makefile中增加gcc的参数,也可以在编译服务器中定义环境变量CFLAGS
LDFLAGS
,这两个方法都依赖于Makefile的具体实现。
# Makefile增加CFLAGS和LDFLAGS
CFLAGS += -fdiagnostics-color=always
LDFLAGS += -fdiagnostics-color=always
# 定义环境变量
export CFLAGS="-fdiagnostics-color=always "$CFLAGS
export LDFLAGS="-fdiagnostics-color=always "$LDFLAGS
- 定义别名,之后在工作服务器使用xmake和xmm进行编译即可
# ~/bin/make是重新编译的make程序,其中注释掉了时间警告
alias xmake='ssh xflm@compile.sw.com "cd $PWD; ~/bin/make"'
alias xmm='ssh xflm@compile.sw.com "cd $PWD; ~/bin/make clean; ~/bin/make -j8"'