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

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

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

时间: 2024-11-12 20:41:38

排查源码编译错误的一些技巧的相关文章

Cocos2dx 3.6源码编译错误:syntax error : missing ')' before '{'

在编译Cocos2dx 3.6版本时,发现编译错误: 定位代码行: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F{0.0,1.0,1.0,1.0}); 修改如下: debugForNormalSprite->drawPoints(positions, 4, 8, Color4F<span style="color:#ff0000;">(</span>0.0,1.0,1.0,1.0&

解决 Ubutnu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target &#39;all&#39; failed

最近源码编译 opencv,出现下面的错误 [ 60%] Built target opencv_dnn Makefile:160: recipe for target 'all' failed make: *** [all] Error 2 google 一下,才知道原来是安装了 Anaconda 后,python 和 gcc 都用的是 anaconda 的版本,anaconda 的 gcc 版本,比 system defalut 的版本低 参考:https://stackoverflow.c

SQLite第三课 源码编译错误以及解决

1)fts2 has a designflaw and has been deprecated 2)fts1 has a designflaw and has been deprecated 解决方案: 解析:FTS1和FTS2都有设计的缺陷,现在已经被废弃,目前已经提供了FTS3或者FTS4,这些作为全文搜索的模块,弥补了以前的FTS1的不足.如果确定不会使用到全文搜索,可以直接使用SQLITE_CORE,禁用.将SQLITE_CORE添加到编译选项. VS 的基本设置:属性>>C/C++&

c++ primer plus 第六版程序清单16.8 vect2.cpp 手打源码编译错误!!!

坚持手打源码,编译运行,但未每个程序均进行单步调试,昨天在VS2017上手打c++ primer plus 第六版程序清单16.8 vect2.cpp后编译出错: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

关于源码编译每次提示有错误 要make update-api

最近编译newline的版本的时候..同事修改了andoid默认输入法为百度.这是系统自动提供的API,所以每次编译会提示 此时在编译源码生成SDK的过程中会出现这个问题:******************************You have tried to change the API from what has been previously approved.To make these errors go away, you have two choices:   1) You c

【转】Android 源码编译make的错误处理--不错

原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61-Ubuntu SMP Tue Oct 11 15:29:15 UTC 2011 i686 GNU/Linux(Ub

源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题

最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持openssl, 支持curl, 网上找了好多资料, 都没解决. [[email protected] ~]# php -V Failed loading /usr/local/zend/ZendOptimizer.so: /usr/local/zend/ZendOptimizer.so: undefi

源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)

最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持openssl, 支持curl, 网上找了好多资料, 都没解决. [plain] view plain copy [[email protected] ~]# php -V Failed loading /usr/local/zend/ZendOptimizer.so:  /usr/local/zend

Android源码编译make的错误处理

android源码下载:官方下载 或参考android源码下载方式 Android编译版本: PLATFORM_VERSION=4.0.1(最新Android 4.0.1) OS 操作系统平台: Linux yanggang 2.6.35-30-generic #61-Ubuntu SMP Tue Oct 11 15:29:15 UTC 2011 i686 GNU/Linux(Ubuntu10.10  32bit) 首先,我们先安装一些常用的工具curl: sudo  apt-get  inst