问题整理 [已解决] - Debian10 下编译 OpenJDK-8 源码 - left operand of shift expression is negative [-fpermissive]

ERROR:×××left operand of shift expression ‘(-1 << 1)’ is negative [-fpermissive] ×××

具体报错:

/mnt/Data/AppsData/Repository/java/jdk/8/hotspot/src/share/vm/code/dependencies.hpp:169:59: error: left operand of shift expression '(-1 << 1)' is negative [-fpermissive]
 all_types           = ((1 << TYPE_LIMIT) - 1) & ((-1) << FIRST_TYPE),
                                                 ~~~~~~^~~~~~~~~~~~~~

暂时不知道具体错误的原因,可尝试以下办法解决

查看gcc,g++版本配置

$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc-7
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 7.3.0-21' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.3.0 (Debian 7.3.0-21)

猜测可能是版本过高,切换到低版本例如gcc-4.9gcc-4.9,并保持两者版本一致:

$ sudo update-alternatives --config gcc
有 3 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。

选择       路径            优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-7     7001      自动模式
1            /usr/bin/gcc-4.9   4901      手动模式
2            /usr/bin/gcc-6     6001      手动模式
3            /usr/bin/gcc-7     7001      手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:1
update-alternatives: 使用 /usr/bin/gcc-4.9 来在手动模式中提供 /usr/bin/gcc (gcc)
$ sudo update-alternatives --config g++
 3 个候选项可用于替换 g++ (提供 /usr/bin/g++)。

选择       路径            优先级  状态
------------------------------------------------------------
* 0            /usr/bin/g++-7     7001      自动模式
1            /usr/bin/g++-4.9   4901      手动模式
2            /usr/bin/g++-6     6001      手动模式
3            /usr/bin/g++-7     7001      手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:1
update-alternatives: 使用 /usr/bin/g++-4.9 来在手动模式中提供 /usr/bin/g++ (g++)

没有请通过sudo apt-get安装,或者从网上下载安装,也可以用可用的最低版本尝试。

若还有其他方法告知,实在感激不尽

猜你喜欢

转载自blog.csdn.net/desiyonan/article/details/80801899