分类 运维日寄 下的文章

今天打包bcc,需要一同打包llvm,打包时报了和之前一样的错误third-party/benchmark" which is not an existing directory.,老样子去修改CMakeCache.txt的参数 ,重跑发现自动生成了新的cmakecache覆盖了修改过后的文件,导致依旧报相同的错误

修改方式

在llvm的源码包下grep -R 'BENCHMARKS' *,发现CMakeLists.txt内有相关生成设置,进去把相关参数调为OFF,把这份修改过的源码包打包成压缩文件用于制作rpm包

make install 安装llvm,装到一半报错停止,看了下报的是磁盘剩余空间不足,df -h看了下

/dev/mapper/centos-root   26G   26G  163M 100% /
(看来是装虚拟机的时候空间选小了(x

解决办法

du -sh *,或者du -h -x --max-depth=1,从根目录看起,找到那个目录下面垃圾太多,把一些安装包装过的源码清理后,磁盘空出来了,再次make install,问题解决

llvm编译后产生的文件也很大,记得装完删除

在centos7上安装了8+版本的gcc,环境变量配了,- v查看没问题,cmake安装llvm,报错,一看还是调用了旧版本的gcc

cmake -G 'Unix Makefiles' -DCMAKE_INSTALL_PREFIX=INSTALL_DIR -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=On ../llvm-14.0.3.src
CMake Error at cmake/modules/CheckCompilerVersion.cmake:39 (message):
Host GCC version must be at least 5.1, your version is 4.8.5.
Call Stack (most recent call first):
cmake/modules/CheckCompilerVersion.cmake:49 (check_compiler_version)
cmake/config-ix.cmake:14 (include)
CMakeLists.txt:732 (include)


-- Configuring incomplete, errors occurred!
See also "/opt/llvmbuild/CMakeFiles/CMakeOutput.log".

查了下,貌似cmake默认会去调用/usr/bin和/usr/local/bin,因为我是手动编译安装所以残留有原来的旧版本的gcc,但是我修改了这两个目录下gcc的ln指向,依旧还是报同样的错误,去修改了ld.so.conf手动添加了新版本gcc的链接库,ldconfig了,ldconig -v / -p都能查到,但是运行后依旧报同样错误

解决方法:

cmake的时候手动指定编译要用的gcc和g++的路径

cmake -G 'Unix Makefiles' -DCMAKE_INSTALL_PREFIX=/usr/local -DLLVM_INCLUDE_DIRS=/usr/local/gcc-9.4/lib64 -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=On ../llvm-14.0.3.src -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=$(which g++) -DCMAKE_C_COMPILER=$(which gcc)
运行了两次这个命令,能跑下去了

解决gcc的问题后,cmake又报了个错

CMake Error at CMakeLists.txt:1256 (add_subdirectory):
add_subdirectory given source
"/opt/llvm-14.0.3.src/../third-party/benchmark" which is not an existing
  directory.

https://github.com/llvm/llvm-project/issues/54941

从github上面看到,貌似是cmake的bug(也可能是feature hhhh)

解决方案:

vi CMakeCache.txt
LLVM_INCLUDE_BENCHMARKS:BOOL=OFF

终于跑通了,make中,希望下班前能装上bcc,折腾好几天了。。。

编译gcc,install完了按照博客改了个文件source,-v查看发现还是旧版本

补正方式

vi /etc/bashrc
#gcc
LD_LIBRARY_PATH=:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/gcc-9.4/lib:/usr/local/gcc-9.4/lib64


vi /etc/profile
export PATH=/usr/local/gcc-9.4/bin:$PATH

最后退出重登了一下就行

貌似一开始就改了第一个,没成功

bashrc和profile都是系统环境变量配置文件

个人配置文件:~/.bash_profile 、~/.bashrc。

全局配置文件:/etc/profile、/etc/profile.d/*.sh、/etc/bashrc

profile类文件主要用来设定环境变量、登陆前运行的脚本和命令。

bashrc类文件,则是设定本地变量,定义命令别名。如果全局配置文件和个人配置文件产生冲突,以个人配置文件为主。

bashrc是为每一个运行bash shell用户执行的文件,每当shell被打开就会被甲在,profile会在用户第一次登录的时候被执行

LD_LIBRARY_PATH是一个环境变量名,用于指定查找动态链接库的路径

export PATH也是个环境变量,作用类似于windows上的path

安装参考的博客之一,看了几篇博客,每一篇改的配置文件都不一样....

https://www.cnblogs.com/damonxu/p/6434265.html

编译gcc,连着服务器放那跑,过几个小时看见编译停了,再一看有个报错

client_loop: send disconnect: Broken pipe

一查是因为长时间无操作ssh连接自动关闭,于是乎make进程跟着这个被关掉的shell一块寄了

解决方案:

vi  ~/.ssh/config
TCPKeepAlive yes
ServerAliveInterval 10
ServerAliveCountMax 10
重启服务
如果把电脑合上也会导致掉线.....

或把进程丢在后台跑

nohup command &

或只保持当前ssh不关闭(一次性)

ssh -o ServerAliveInterval=60 user@sshserver