2011-09-23 29 views
1

也就是說,遵循zxing/cpp/README中的說明,即'僅構建庫: - 在此文件夾中運行「scons lib」(cpp )'構建zxing的cpp/lib在Fedora14下失敗,即使遵循以下指令:

那麼,那正是我所做的。但我得到:

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沒有找到,所以我檢查了它:它已安裝。在我放棄試圖找出它爲什麼要尋找命令'o'之前,我只簡單看了一下scons的python。當然沒有。

順便說一句:我只有三天前使用wget獲得了zxing 1.7的副本,今天還有'scons'的yum安裝。所以他們是最新的。

回答

0

很可能您是正確的,並且SCons未找到GCC。您最好的選擇是添加一個調用來顯示一些(或全部)環境的內容。如下所示,您可以拉出特定變量或show the whole environment。最好的地方可能會接近建設者的呼叫(SharedLibrary,StaticLibrary或Program)。名爲「ENV」的環境:

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

確保適當的默認環境正在開始使用(大概就像):

env = DefaultEnvironment(...) 

或者您的系統(包括路徑)的環境變量正在傳播給SCons。要做到這一點的方法之一是:

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

編輯:

這些變化需要

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

在極端情況下,你可以通過提供編譯器的顯式路徑解決此問題在適當的SConstruct或SConscript文件中進行。這取決於確切的項目,以及你想要達到的目標 - 在目前版本的谷歌代碼zxing的情況下,這是合理的做出更改或接近第40線的SConscript file

+0

謝謝安德魯。我嘗試按照你給的標題爲「顯示整個環境」的鏈接指示,我得到了以下錯誤:文件「/ usr/bin/scons」,第73行,在 newenv = Environment()NameError:name'Environment '沒有定義我在這裏對格式不好的道歉,我不明白爲什麼Stack Overflow堅持將Newline解釋爲「保存編輯」而不是允許我插入。順便說一句:我很驚訝地發現,在scons中甚至沒有定義「env」。這是怎麼回事?所以我可以使用這個名稱而不是'myenv'並得到相同的錯誤。 –

+0

@Matt - 就環境而言,zxing在SConstruct中使用SCons技巧來確保所有編譯文件(.o,.os和.so文件)最終都會放在適當的「build」目錄中。結果是大多數環境設置都被移入SConscript文件中。 –

+0

@Matt - 關於堆棧溢出評論換行格式,如果對該問題進行了非平凡的修改或擴展,通常的最佳做法是編輯您的問題,並在需要的地方發佈「檢查更改的評論」 。這具有讓您使用問題格式化/編輯工具而不是註釋工具的優勢。 –

相關問題