/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: