相关文章推荐
威武的冰棍  ·  WPF ...·  7 月前    · 
听话的领带  ·  groovy regex find all ...·  1 年前    · 
果断的冲锋衣  ·  php - MySQL实验: ...·  1 年前    · 
/home/jdk8/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c:38:24: fatal error: sys/sysctl.h: 没有那个文件或目录
 #include <sys/sysctl.h>
compilation terminated.
/home/jdk8/jdk/src/solaris/native/java/net/PlainSocketImpl.c:46:24: fatal error: sys/sysctl.h: 没有那个文件或目录
 #include <sys/sysctl.h>
compilation terminated.
In file included from /home/jdk8/jdk/src/share/native/java/net/net_util.c:29:0:
/home/jdk8/jdk/src/share/native/java/net/net_util.c: In function ‘NET_SockaddrToInetAddress’:
/home/jdk8/jdk/src/share/native/java/net/net_util.h:46:41: warning: comparison between pointer and integer [enabled by default]
 #define CHECK_NULL_RETURN(x, y) if ((x) == NULL) return y;
/home/jdk8/jdk/src/share/native/java/net/net_util.c:268:13: note: in expansion of macro ‘CHECK_NULL_RETURN’
             CHECK_NULL_RETURN(ret, NULL);
gmake[2]: *** [lib/NetworkingLibraries.gmk:57:/home/jdk8/build/linux-x86_64-normal-server-release/jdk/objs/libnet/PlainDatagramSocketImpl.o] 错误 1
gmake[2]: *** 正在等待未完成的任务....
gmake[2]: *** [lib/NetworkingLibraries.gmk:57:/home/jdk8/build/linux-x86_64-normal-server-release/jdk/objs/libnet/PlainSocketImpl.o] 错误 1
gmake[1]: *** [BuildJdk.gmk:70:libs-only] 错误 2
make: *** [/home/jdk8//make/Main.gmk:116:jdk-only] 错误 2

我的gcc和g++版本都是4.8,apt-get的jdk也是1.8版本,报错和make的版本没什么关系(已经实测过)。

这个报错的主要原因是随着 glibc 2.32 的发布,Linux 系统删除了sys/sysctl.h。

因此解决方式只需要把openjdk8目录下的jdk/src/solaris/native/java/net下的PlainDatagramSocketImpl.c和PlainSocketImpl.c中的38行和46行注释掉就行

#include <sys/sysctl.h>
注释掉就行,即改成
// #include <sys/sysctl.h>

如果这篇文章对你有用,麻烦大家点个赞吧(第一次发文章),感谢大家的支持。

这个问题openjdk官方也发布了解决方法:

openjdk官方关于Linux移除了sys/sysctl.h的解决方法

gmake[2]: *** [lib/NetworkingLibraries.gmk:57:/home/jdk8/build/linux-x86_64-normal-server-release/jdk/objs/libnet/PlainDatagramSocketImpl.o] 错误 1gmake[2]: *** 正在等待未完成的任务....gmake[2]: *** [lib/NetworkingLibraries随着 glibc 2.32 的发布,Linux 系统删除了sys/sysctl.h。 移植海思hi3519a驱动时,原来的驱动代码 编译 不过,提示 报错 如下: fatal error : asm/ sys tem.h: No such file or directory 2.解决方法 后面使用asm/switch_to.h替换后,正常 编译 通过,功能正常。 编译 内核环境3.10.0-693。
这个错误提示是因为 编译 器无法找到 `openssl/opensslconf.h` 文件 ,这个 文件 通常位于 OpenSSL 库的安装 目录 中。您可以尝试以下步骤解决此问题: 1. 确认 OpenSSL 库已安装。如果 没有 安装,您需要先安装 OpenSSL 库。 2. 确认 `openssl/opensslconf.h` 文件 存在于 OpenSSL 库的安装 目录 中。如果不存在,您需要重新安装 OpenSSL 库或者手动将该 文件 添加到正确的 目录 中。 3. 如果 OpenSSL 库已安装并且 `openssl/opensslconf.h` 文件 存在于正确的 目录 中,但是 编译 器仍然无法找到该 文件 ,则可以尝试将 OpenSSL 库的安装 目录 添加到 编译 器的搜索路径中。例如,使用以下命令 编译 程序: gcc -I/path/to/openssl/ include my file .c -o my file -L/path/to/openssl/lib -lssl -lcrypto 其中 `/path/to/openssl/ include ` 是 OpenSSL 库的头 文件 目录 ,`/path/to/openssl/lib` 是 OpenSSL 库的库 文件 目录 。请根据您的实际情况修改这些路径。
fatal error: sys/sysctl.h: 没有那个文件或目录 #include <sys/sysctl.h> (JVM)Linux下编译openjdk-8报错 CornerH: