2022年5月

今天打包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

解压

tar后面跟一个主要参数和多个可选参数,主要参数必须选一

主要参数

-c: 压缩
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

常用可选参数

-z:gzip
-j:bz2
-Z:compress
-v:显示所有过程
-f:指定文件名,必须出现在最后,后面接文件名

例:

tar xvf gcc.tar

压缩

tar + c

tar -cvf [文件名].tar [文件目录] //打包成.tar文件