在Fedora14下即使完全按照说明,构建zxing的cpp/lib失败

1 投票
1 回答
602 浏览
提问于 2025-04-17 02:54

也就是说,按照 zxing/cpp/README 里的说明,里面说“要构建这个库的话:在这个文件夹(cpp)里运行 'scons lib'”。

我就是这么做的。但是我得到了:

 scons lib
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
o build/core/src/zxing/BarcodeFormat.o -c -O0 -g3 -ggdb -Wall -Ibuild/core/src build/core/src/zxing/BarcodeFormat.cpp
sh: o: command not found

出现了很多次“O: 找不到命令”的错误。

我想问题可能是找不到 gcc,所以我检查了一下:它是安装好的。我只简单看了一下 scons 的 Python 代码,就放弃了,没搞明白为什么它会去找一个叫 'o' 的命令。当然是没有这个命令的。

顺便说一下:我三天前用 wget 下载了 zxing 1.7,今天用 yum 安装了 'scons'。所以它们都是最新的。

1 个回答

0

你可能是对的,SCons 找不到 GCC。最好的办法是添加一个命令,显示一些(或所有)环境的内容。如下所示,你可以提取特定的变量,或者显示整个环境。最好的位置可能是在调用构建器(SharedLibrary、StaticLibrary 或 Program)附近。假设有一个名为 'env' 的环境:

print env.Dump()
print env['CC']
print env['CXX']

确保一开始使用的是合适的默认环境(可能是类似这样的):

env = DefaultEnvironment( ... )

或者确保你系统上的环境变量(包括路径)能够传递到 SCons。做到这一点的一种方法是:

import os
# ...
env = Environment( ENV = os.environ, ... )

在极端情况下,你可以通过提供编译器的明确路径来解决这个问题:

env['CC'] = '/usr/bin/gcc'

补充:

这些更改需要在合适的 SConstruct 或 SConscript 文件中进行。具体取决于你的项目和你想要实现的目标——以当前版本的 zxing 在 Google 代码上的情况来看,在SConscript 文件的第 40 行附近进行更改是合理的。

撰写回答