在 centos 7 上编译 openjdk 9 时的 X11 问题
X11 problems when compiling openjdk 9 on centos 7
第一次开始编译openjdk时发现问题
下面是我做的
- hg 克隆 http://hg.openjdk.java.net/jdk9/dev 9dev
- cd 9dev
- bash ./get_source.sh
- bash ./configure
然后,我收到了这个错误信息
configure: error: Could not find X11 libraries. You might be able to fix this by running 'sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel'.
然后,我按照它告诉我的去做了。
安装后还是一样的错误
所以我检查了文件在我机器上的位置
rpm -qa | grep X11
libX11-1.6.3-3.el7.x86_64
libX11-common-1.6.3-3.el7.noarch
libX11-devel-1.6.3-3.el7.x86_64
rpm -ql libX11-1.6.3-3.el7.x86_64
/usr/lib64/libX11-xcb.so.1
/usr/lib64/libX11-xcb.so.1.0.0
/usr/lib64/libX11.so.6
/usr/lib64/libX11.so.6.3.0
所以我尝试了指定X11路径的方式
- bash ./configure --x-libraries=/usr/lib64
不幸的是,同样的错误仍然存在。
有人可以帮我离开这里吗?
感谢
更新
感谢@omajid 将我引导至日志文件 config.log
,我在其中发现配置在我的 linuxbrew 安装中使用 gcc。
configure:56234: /data/alex/git/brew/bin/g++ -o conftest conftest.cpp -lX11 >&5
/data/alex/git/brew/bin/ld: cannot find -lX11
collect2: error: ld returned 1 exit status
configure:56234: $? = 1
所以我将我的c编译器导出到系统一后,问题就解决了。
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
这里是构建时需要的相关包和我在my spec file for building unofficial OpenJDK 9 packages for Fedora/EPEL中使用的配置标志:
autoconf
automake
alsa-lib-devel
binutils
cups-devel
desktop-file-utils
fontconfig
freetype-devel
elfutils
giflib-devel
gcc-c++
gdb
gtk2-devel
lcms2-devel
libjpeg-devel
libpng-devel
libxslt
libX11-devel
libXi-devel
libXinerama-devel
libXt-devel
libXtst-devel
nss-devel
pkgconfig
xorg-x11-proto-devel
zip
java-1.8.0-openjdk-devel
bash ../configure \
--with-boot-jdk=/usr/lib/jvm/java-1.8.0-openjdk/ \
--with-native-debug-symbols=internal \
--enable-unlimited-crypto \
--with-zlib=system \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
--with-lcms=system \
--with-stdc++lib=dynamic \
--disable-javac-server \
--disable-warnings-as-errors
无论如何,configure 产生的错误消息是最好的猜测。您应该查看 config.log 以查看实际失败的测试以及错误消息是什么。在这种情况下,看起来您可能缺少几个 X11 库之一。可能 libXinerama-devel
.
如果这仍然不能解决您的错误,请粘贴您的 autoconf 日志文件中的错误消息(应该命名为 config.log 或 configure.log,我忘记了)。
第一次开始编译openjdk时发现问题
下面是我做的
- hg 克隆 http://hg.openjdk.java.net/jdk9/dev 9dev
- cd 9dev
- bash ./get_source.sh
- bash ./configure
然后,我收到了这个错误信息
configure: error: Could not find X11 libraries. You might be able to fix this by running 'sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel'.
然后,我按照它告诉我的去做了。
安装后还是一样的错误
所以我检查了文件在我机器上的位置
rpm -qa | grep X11
libX11-1.6.3-3.el7.x86_64 libX11-common-1.6.3-3.el7.noarch libX11-devel-1.6.3-3.el7.x86_64
rpm -ql libX11-1.6.3-3.el7.x86_64
/usr/lib64/libX11-xcb.so.1 /usr/lib64/libX11-xcb.so.1.0.0 /usr/lib64/libX11.so.6 /usr/lib64/libX11.so.6.3.0
所以我尝试了指定X11路径的方式
- bash ./configure --x-libraries=/usr/lib64
不幸的是,同样的错误仍然存在。
有人可以帮我离开这里吗?
感谢
更新
感谢@omajid 将我引导至日志文件 config.log
,我在其中发现配置在我的 linuxbrew 安装中使用 gcc。
configure:56234: /data/alex/git/brew/bin/g++ -o conftest conftest.cpp -lX11 >&5 /data/alex/git/brew/bin/ld: cannot find -lX11 collect2: error: ld returned 1 exit status configure:56234: $? = 1
所以我将我的c编译器导出到系统一后,问题就解决了。
export CC=/usr/bin/gcc
export CXX=/usr/bin/g++
这里是构建时需要的相关包和我在my spec file for building unofficial OpenJDK 9 packages for Fedora/EPEL中使用的配置标志:
autoconf
automake
alsa-lib-devel
binutils
cups-devel
desktop-file-utils
fontconfig
freetype-devel
elfutils
giflib-devel
gcc-c++
gdb
gtk2-devel
lcms2-devel
libjpeg-devel
libpng-devel
libxslt
libX11-devel
libXi-devel
libXinerama-devel
libXt-devel
libXtst-devel
nss-devel
pkgconfig
xorg-x11-proto-devel
zip
java-1.8.0-openjdk-devel
bash ../configure \
--with-boot-jdk=/usr/lib/jvm/java-1.8.0-openjdk/ \
--with-native-debug-symbols=internal \
--enable-unlimited-crypto \
--with-zlib=system \
--with-libjpeg=system \
--with-giflib=system \
--with-libpng=system \
--with-lcms=system \
--with-stdc++lib=dynamic \
--disable-javac-server \
--disable-warnings-as-errors
无论如何,configure 产生的错误消息是最好的猜测。您应该查看 config.log 以查看实际失败的测试以及错误消息是什么。在这种情况下,看起来您可能缺少几个 X11 库之一。可能 libXinerama-devel
.
如果这仍然不能解决您的错误,请粘贴您的 autoconf 日志文件中的错误消息(应该命名为 config.log 或 configure.log,我忘记了)。