首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何排除CheckLib返回false的问题?

如何排除CheckLib返回false的问题?
EN

Stack Overflow用户
提问于 2014-10-27 19:31:58
回答 3查看 1.5K关注 0票数 4

Scon版本为2.3.3。以下是构建脚本的相关部分:

代码语言:javascript
复制
if not conf.CheckLib('portaudio'):
    raise Exception(
        'Did not find libportaudio.a, portaudio.lib, or the PortAudio-v19 development header files.')

CheckLib总是返回一个虚值。我如何调试这个?我一直跟踪它的源代码,直到它试图构建一个小的测试程序,但后来我无法进一步跟踪它。

我尝试了“Scon手册”第27节中建议的所有故障排除标志,但是它们都没有产生任何额外的输出。例如,

代码语言:javascript
复制
C:\code\github\mixxx2>scons -Q --debug=findlibs winlib=%WINLIB_PATH% qtdir=%WINL
IB_PATH%\build\qt-everywhere-opensource-src-4.8.6 hss1394=1 mediafoundation=1 op
us=0 build=%BUILD_TYPE% machine=%TARGET_MACHINE% toolchain=msvs virtualize=0 tes
t=1 sqlitedll=0 mssdk_dir=%MSSDK_DIR% force32=1

我不知道-Q选项是干什么用的。我试过省略它,这并没有什么区别;我没有得到关于stdout的任何其他信息。只有这一点:

代码语言:javascript
复制
[...truncated...]
Checking for C library portaudio... no
ERROR:root:Unmet dependency: Did not find libportaudio.a, portaudio.lib, or the
PortAudio-v19 development header files.
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-30 19:48:36

配置对象在执行其操作时生成日志文件,默认情况下该文件为config.log。根据scon手册页的配置上下文部分,当Configure对象通过传递log_file参数进行初始化时,可以自定义日志文件。

使用一个简单的SConstruct,我得到一个生成失败的config.log文件。

SConstruct:

代码语言:javascript
复制
env = Environment()
conf = Configure(env)    
if not conf.CheckLib('foo'):
    Exit('Can not find foo')

config.log:

代码语言:javascript
复制
file /home/dbacher/Code/scons-test/SConstruct,line 2:
        Configure(confdir = .sconf_temp)
scons: Configure: Checking for C library foo... 
.sconf_temp/conftest_0.c <-
  |
  |
  |
  |int
  |main() {
  |  
  |return 0;
  |}
  |
gcc -o .sconf_temp/conftest_0.o -c .sconf_temp/conftest_0.c
gcc -o .sconf_temp/conftest_0 .sconf_temp/conftest_0.o -lfoo
/usr/bin/ld: cannot find -lfoo
collect2: ld returned 1 exit status
scons: Configure: no

我想这个日志文件已经足够您诊断问题了。

顺便说一句,scon手册将-Q选项描述为:

停止有关读取SCons文件、构建目标和输入目录的SConscript状态消息。仍然打印用于重新生成目标文件的命令。

票数 4
EN

Stack Overflow用户

发布于 2018-02-06 07:54:30

在查找-帮助之后,我发现-调试选项对您的情况很有帮助。

代码语言:javascript
复制
scons --debug=findlibs    blah blah

详细信息显示在config.log中。

票数 0
EN

Stack Overflow用户

发布于 2021-05-28 13:04:19

在一个中断的构建之后,我遇到了这个问题。移除.sconf_temp/.sconsign.dblite为我解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26595410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档