在Fedora14下即使完全按照说明,构建zxing的cpp/lib失败
也就是说,按照 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 行附近进行更改是合理的。