
PythonのコードをJavaScriptにコンバートするpy2jsを読んで、コードを持ってきて俺スタイルに書き直す。
cuiでテストできんな・・・と思っていたところ、V8 on pythonなるものがあることを発見。LL futureで古い言語、新しい言語ででてきたLLVMの話が思い出される。あれはTamarinだったっけ?
ま、いいや。
sconsはyumでdriesから入れることができる。
Cythonをパッケージ・・・がv8のshared libraryがbuildできない。
/usr/bin/ld: warning: i386 architecture of input file
`obj/release/snapshot-empty.os' is incompatible with i386:x86-64 output
こんな感じ
arser.cc:(.text+0xa932): undefined reference to `operator new(unsigned int)'
obj/release/platform-linux.os: In function `v8::internal::OS::CreateSemaphore(int)':
platform-linux.cc:(.text+0x31f): undefined reference to `operator new(unsigned int)'
とかなる。ん~~ということはg++のoptionがおかしいのだろうか。
どういう風にoptionが渡されるかSconsをチェック。makeをreplaceするためのツールらしい。pythonでできているようだ。そういえばpython自体はいまはどうなっているんだ?Sconsにかわったのかな?
g++ --target-helpでわかった。
Target specific options:
-m128bit-long-double sizeof(long double) is 16
-m32 Generate 32bit i386 code
-m3dnow Support 3DNow! built-in functions
-m64 Generate 64bit x86-64 code
-m32でbuildされてる。だめじゃこりゃ。
LIBRARY_FLAGS = {
'all': {
'CPPDEFINES': ['ENABLE_LOGGING_AND_PROFILING']
},
'gcc': {
'all': {
'DIALECTFLAGS': ['-ansi'],
'CCFLAGS': ['$DIALECTFLAGS', '$WARNINGFLAGS',
'-fno-strict-aliasing'],
'CXXFLAGS': ['$CCFLAGS', '-fno-rtti', '-fno-exceptions'],
'LIBS': ['pthread']
},
'mode:debug': {
'CCFLAGS': ['-g', '-O0'],
'CPPDEFINES': ['ENABLE_DISASSEMBLER', 'DEBUG']
},
'mode:release': {
'CCFLAGS': ['-O2']
},
'wordsize:64': {
'CCFLAGS': ['-m32'],
'LINKFLAGS': ['-m32']
}
},
Scriptをs/m32/m64/gとかしてscons library=shared wordsize=64とするも、
LOGGING_AND_PROFILING src/accessors.cc
src/checks.h: In function 'void CheckEqualsHelper(const char*, int, const char*, void*, const char*, void*)':
src/checks.h:139: error: cast from 'void*' to 'int' loses precision
src/checks.h:139: error: cast from 'void*' to 'int' loses precision
ぼーん。void*が64bitなのにintが32bitでうまくいかない。
ああ、ライブラリ自体が実行時にassembly codeを生成するから、32bit強制だったかな?
-cしてもobj下が消えないし。使い勝手が違うのに慣れるまでアレだね。
linker側の設定をいじるか、これは。
/
g++ -o obj/release/snapshot-empty.os -c -ansi -pedantic -Wall -Werror -W
-Wno-unused-parameter -fno-strict-aliasing -O2 -m32 -fPIC -DENABLE_LOGGING_AND_PROFILING
src/snapshot-empty.cc
あ、-m32がない!だめぽ。Scons Scriptの直し方わからないので、g++ -m32 (ryを実行
[nori@Asama]~/Desktop/work/packaging/v8/fromBitbucket/v8onpython% python setup.py build_ext --inplace
running build_ext
building 'v8onpython' extension
gcc -pthread -shared build/temp.linux-x86_64-2.4/v8onpython.o -Lv8-src -lv8 -o v8onpython.so -m32
/usr/bin/ld: warning: i386:x86-64 architecture of input file `build/temp.linux-x86_64-2.4/v8onpython.o' is incompatible with i386 output
build/temp.linux-x86_64-2.4/v8onpython.o: In function `__Pyx_AddTraceback':
/home/nori/Desktop/work/packaging/v8/fromBitbucket/v8onpython/v8onpython.cpp:780: undefined reference to `PyString_FromString'
つーか、これからしておかしい。
creating build/temp.linux-x86_64-2.4
gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC -Iv8-src/include -I/usr/include/python2.4 -c v8onpython.c -o build/temp.linux-x86_64-2.4/v8onpython.o -m32
setup.pyから32bitを強制する方法は?
extra_compile_args=["-m32"],
extra_link_args=["-m32"],
コレ以外には?最終的なpackageのarchを32にしたいんだよね、x86-64じゃなくて。
0 件のコメント:
コメントを投稿