排查源码编译错误的一些技巧

make使用技巧

源码编译时有错误出现在 Linux 下是很正常的事,关键是要懂得查看错误信息。一般 Linux 下的错误主要是由路径、权限、链接库造成的,可以针对这些内容进行筛选,找出出错的原因并加以解决。

对于编译一些时间长,输出多的库或程序,可以使用 make 2>&1 | tee build.log 来在文件和控制台同时输出 标准输出、标准错误输出

然后在log日志文件中直接搜索/error /ERROR /ABORT 查看错误信息

ask

make 2>&1 | tee build.log 求解释

问题1: 2 , &1 表示什么意思
问题2: 和 make > build.log 有什么区别吗

answer

问题1:表示的是文件描述符。0 stdin,1 stdout,2 stderr 2>&1,表示标准错误重定向到标准输出
问题2:作用上没有区别,后者是把make的所有输出都重定向到文件build.log当中

1. 如果没有2>&1,只会有标准输出,没有错误;
2. tee的作用同时输出到控制台和文件

find 使用技巧

报错: undefine reference XXX变量或函数

原因基本上是找不到相关的lib库文件,要么是机器上没有该库文件,要么是环境变量没有配置好,无法连接到该文件。

可以尝试如下命令

find . -type f  -exec grep -Ho nc_get_vars {} \; | uniq

作用是:在当前目录下的所有文件里找变量nc_get_vars并输出文件名

有特殊符号的如:udunits.h 需要用双引号 “udunits.h” 包含起来

一般会找到 configure 文件中连接该lib文件的变量,或是直接找到源码文件

如果是找不到文件

可以用

find . -name "udunits.h"

来检查是在当前目录下有该文件

ubuntu系统可以通过

apt-cache search udunits

查找是否在软件源中含有该库

你可能感兴趣的:(源码,编译,库)