2016-11-23 3 views
1

jdk9をビルドしたいが、次の問題が発生した。 OSX El Capitanでgcc & g ++バージョン5.3.0(Homebrew gcc 5.3.0)を使用しています。 私も4.9.3を使ってみましたが、それでも同じです。無gcc:error:認識できないコマンドラインオプション '-mstack-alignment = 16' MacOSXでopenjdk9をビルドするとき

Building target 'default (exploded-image)' in configuration 'macosx-x86_64-normal-server-release' 
Building JVM variant 'server' with features 'all-gcs cds compiler1 compiler2 dtrace fprof jni-check jvmci jvmti management nmt services vm-structs' 
Compiling 8 files for BUILD_TOOLS_LANGTOOLS 
Creating adlc from 13 file(s) 
Compiling 2 files for BUILD_JVMTI_TOOLS 
Creating libjsig.dylib from 1 file(s) 
gcc: error: unrecognized command line option '-mstack-alignment=16' 
make[4]: *** [/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/build/macosx-x86_64-normal-server-release/hotspot/libjsig/objs/jsig.o] Error 1 
make[3]: *** [jsig] Error 2 
make[3]: *** Waiting for unfinished jobs.... 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp: In constructor 'Arena::Arena(size_t)': 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:31:7: error: non-placement deallocation function 'static void Chunk::operator delete(void*, size_t)' [-fpermissive] 
void Chunk::operator delete(void* p, size_t length) { 
    ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:60:52: error: selected for placement delete [-fpermissive] 
    _first = _chunk = new (init_size) Chunk(init_size); 
                ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp: In constructor 'Arena::Arena()': 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:31:7: error: non-placement deallocation function 'static void Chunk::operator delete(void*, size_t)' [-fpermissive] 
void Chunk::operator delete(void* p, size_t length) { 
    ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:67:66: error: selected for placement delete [-fpermissive] 
    _first = _chunk = new (Chunk::init_size) Chunk(Chunk::init_size); 
                   ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp: In member function 'void* Arena::grow(size_t)': 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:31:7: error: non-placement deallocation function 'static void Chunk::operator delete(void*, size_t)' [-fpermissive] 
void Chunk::operator delete(void* p, size_t length) { 
    ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:97:31: error: selected for placement delete [-fpermissive] 
    _chunk = new (len) Chunk(len); 
          ^
make[4]: *** [/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/build/macosx-x86_64-normal-server-release/hotspot/variant-server/tools/adlc/objs/arena.o] Error 1 
make[4]: *** Waiting for unfinished jobs.... 
make[3]: *** [variant-server-gensrc] Error 2 
make[2]: *** [hotspot] Error 1 
make[2]: *** Waiting for unfinished jobs.... 

ERROR: Build failed for target 'default (exploded-image)' in configuration 'macosx-x86_64-normal-server-release' (exit code 2) 
=== Output from failing command(s) repeated here === 
* For target hotspot_libjsig_objs_jsig.o: 
gcc: error: unrecognized command line option '-mstack-alignment=16' 
* For target hotspot_variant-server_tools_adlc_objs_arena.o: 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp: In constructor 'Arena::Arena(size_t)': 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:31:7: error: non-placement deallocation function 'static void Chunk::operator delete(void*, size_t)' [-fpermissive] 
void Chunk::operator delete(void* p, size_t length) { 
    ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:60:52: error: selected for placement delete [-fpermissive] 
    _first = _chunk = new (init_size) Chunk(init_size); 
                ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp: In constructor 'Arena::Arena()': 
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:31:7: error: non-placement deallocation function 'static void Chunk::operator delete(void*, size_t)' [-fpermissive] 
void Chunk::operator delete(void* p, size_t length) { 
    ^
/Users/weizhaoy/Documents/STAP/Research/jdk9/openjdk9/hotspot/src/share/vm/adlc/arena.cpp:67:66: error: selected for placement delete [-fpermissive] 
    ... (rest of output omitted) 
=== End of repeated output === 
No indication of failed target found. 
Hint: Try searching the build log for '] Error'. 
Hint: If caused by a warning, try configure --disable-warnings-as-errors. 

make[1]: *** [main] Error 1 
make: *** [default] Error 2 

しかし、私は--enable-debug --disable-warnings-as-errors構成やmakeたターゲットを使用する場合、ありました。そして、

➜openjdk9 bash ./configure --enable-native-coverage --with-toolchain-type=gcc -disable-warnings-as-errors 
➜openjdk9 cd build/macosx-x86_64-normal-server-release 
➜macosx-x86_64-normal-server-release make 

私は、次のエラーログを得た:ここ

は、私が問題に会った方法ですエラー。

はツールチェーンがclangになります(ただし、ツールチェーンが--enable-native-coverage仕事をするためにgccでなければならない)、デフォルトで考えると、--enable-native-coverageオプションと-with-toolchain-type=gccオプションとは何かを持っていることがあり、それのように見えますが、私はそれをどのように修正するのですか?

+0

'make LOG = trace'を使ってOpenJDKビルドを実行しているすべてのコマンドを表示させます。私はOpenJDKがMacではデフォルトでclangを使うと信じているので、おそらくgccでは条件付きではありません。最初のエラーは赤ちゃんです。 'arena.cpp'のエラーが実際にビルドを失敗させる原因になっていると思われ、' --disable-warnings-as-errors'がその問題を回避しています。 autoconfマクロ 'FLAGS_COMPILER_CHECK_ARGUMENTS'を使用して、コンパイラがフラグをサポートしているかどうかを調べることができます。 – omajid

答えて

1

-mstack-alignment=nはgccによって認識されないclangオプションです。 対応するgccオプションは-mpreferred-stack-boundary=nです。

これらは完全に同義ではありません。 -mstack-alignment=nについては、n は、単に望ましいアライメント量です。 -mpreferred-stack-boundary=nため、 2^nので、所望のアライメント量である:GCCのためのあなたは、単にそのオプションを省略することができるよう

-mstack-alignment=16 = -mpreferred-stack-boundary=4 

注意はまた、n = 4は、-mpreferred-stack-boundaryのデフォルトです。

関連する問題