2009-08-06 5 views
1

私はMinGWベースのGCCクロスコンパイラを使ってSConsをビルドシステムとして使用するプロジェクトをコンパイルしています。SCons:GCC Ignoring -c

Pythonは、MinGW(またはCygwin)用にコンパイルされたネイティブ2.6.2バージョンです。私はビルドに問題に実行しています

は、しかし、私はCFLAGSに -cを追加場合

F:/pedigree/compilers/bin/i686-elf-gcc -o build\src\user\applications\apptest\ma 
in.obj -c -std=gnu99 -march=i486 -fno-builtin -m32 -g0 -O3 -Wno-long-long -Wnest 
ed-externs -Wall -Wextra -Wpointer-arith -Wcast-align -Wwrite-strings -Wno-long- 
long -Wno-variadic-macros -Wno-unused -Wno-unused-variable -Wno-conversion -Wno- 
format -Wno-empty-body -fno-stack-protector -DTHREADS -DDEBUGGER -DDEBUGGER_QWER 
TY -DSERIAL_IS_FILE -DECHO_CONSOLE_TO_SERIAL -DKERNEL_NEEDS_ADDRESS_SPACE_SWITCH 
-DADDITIONAL_CHECKS -DBITS_32 -DKERNEL_STANDALONE -DVERBOSE_LINKER -DX86 -DX86_ 
COMMON -DLITTLE_ENDIAN -D__UD_STANDALONE__ -DINSTALLER -Isrc\subsys\posix\includ 
e -Ibuild\src\user\applications\apptest -Isrc\user\applications\apptest src\user 
\applications\apptest\main.c 
f:/pedigree/compilers/bin/../lib/gcc/i686-elf/4.4.1/../../../../i686-elf/bin/ld. 
exe: crt0.o: No such file: No such file or directory 

、私は(「MAIN.OBJ -c」と呼ばれるコンパイルされたオブジェクトを取得しますがありますobjと-cの間のスペース)。

誰でも何が起こっているのか分かりませんか?これを解決するための何かがありますか?

答えて

2

プロジェクトはprogarmとオブジェクトファイルの拡張子を強制するためにPOSIXプラットフォームを使用して、しかし、SConsは中POSIXプラットフォームが機能「エスケープ」を定義しています。それはバックスラッシュをエスケープする場合

def escape(arg): 
    "escape shell special characters" 
    slash = '\\' 
    special = '"$()' 

    arg = string.replace(arg, slash, slash+slash) 
    for c in special: 
     arg = string.replace(arg, c, slash+c) 

    return '"' + arg + '"' 

、それはWindowsで大混乱を天下環境。中立のプラットフォームに変更し、明示的に拡張子を指定することで、問題が解決されます。

関連する問題