自从JDK 1.1.8后,FreeBSD 因为在 Java 授权上的种种问题,已经不能发布预编译的 JDK 软件包,也没有了所谓的 Official Release 了 。

现在要在FreeBSD上使用最新的Java技术,需要通过下面的方式自己编译并进行安装:

(1)  FreeBSD + Linux compatibility enable + Linux Process FileSystem mounted
(2)  Linux Platform - Java(TM) 2 SDK, self-extracting file
(3)  SCSL (Sun Community Source Licensing) Source
       -SCSL Source
       -SCSL Binaries - needed to complete source build
       -Mozilla Binaries
(4)  BSD Java porting patchsets

编译实际上是在FreeBSD的Linux兼容模式下,以Linux JDK Binary为基础,将SCSL Source打上BSD的patch后,在FreeBSD上面编译出native的JDK版本!(哇塞,真是拗口~~~!!!)

所以,以FreeBSD 5.4 Release为例子,我们第一步要做的就是修改 /etc/fstab 这个文件, 新增:


linprocfs     /compat/linux/proc    linprocfs    rw    0        0
 

重新启动后,可以用kldstat查看是否已经mount上了Linux process FileSystem:


FreeBSD# kldstat
Id Refs Address    Size     Name
 1   10 0xc0400000 5dde24   kernel
 2   14 0xc09de000 56270    acpi.ko
 3    1 0xc1803000 6000     linprocfs.ko
 4    1 0xc180c000 17000    linux.ko
 

接下来,当然是要升级到最新的ports tree了:

FreeBSD# cd /usr/ports
FreeBSD# cvsup -g -L 2 /root/ports-supfile
 

然后,进入到JDK的port目录下,我使用的是JDK14:

FreeBSD# cd /usr/ports/java/jdk14                                 
FreeBSD# make
 

如果是初次编译,应该会看到下面的提示:
 
FreeBSD# make                                                   
===>  jdk-1.4.2p7_1 :                                           
 The source distribution exists on your system, but due to      
 licensing restrictions you still need to download the          
 patchset, bsd-jdk14-patches-7.tar.gz, from                     
 http://www.eyesbeyond.com/freebsddom/java/jdk14.html.          
 Please place the patchset in /usr/ports/distfiles.
这说明我们少了一些编译所需要的distfiles,所幸的是系统已经给出了下载的网址,按照上面的提示,一一
将所需要的档案抓下来,并放到这里:/usr/ports/distfiles,我下载的文件列表如下,供大家参考:

  • bsd-jdk14-patches-7.tar.gz
  • j2sdk-1_4_2-bin-scsl.zip
  • j2sdk-1_4_2-mozilla_headers-unix.zip
  • j2sdk-1_4_2-src-scsl.zip
  • j2sdk-1_4_2_09-linux-i586.bin
  • j2sdk-sec-1_4_2-src-scsl.zip

有了这些文件后,就可以开始对JDK进行make了:

 
FreeBSD# cd /usr/ports/java/jdk14
FreeBSD# make

make过程中,会参照系统环境去网上fetch下面几个package,当然,如果您已经安装了它们就太好了~~~!

  • autoconf-000227.tar.bz2
  • automake-1.4-p6.tar.gz
  • rpm- 3.0.6 .tar.gz

make完成对上面几个package安装后,就开始返回到JDK的编译过程,下面是编译中:

 
Compiling /usr/ports/java/jdk14/work/hotspot/src/share/vm/oops/cpCacheKlass.cpp
Compiling /usr/ports/java/jdk14/work/hotspot/src/share/vm/oops/cpCacheOop.cpp  
Compiling /usr/ports/java/jdk14/work/hotspot/src/share/vm/utilities/debug.cpp  
Compiling /usr/ports/java/jdk14/work/hotspot/src/share/vm/code/debugInfo.cpp   
Compiling /usr/ports/java/jdk14/work/hotspot/src/share/vm/code/debugInfoRec.cpp
Compiling /usr/ports/java/jdk14/work/hotspot/src/cpu/i486/vm/debug_i486.cpp    
... 时间很长,以下请大家自我想象...

需要提到一点的是,编译完JVM后,因为我选择的是默认的安装方法,所以make还会去讲一些Java基本的
library用javac作make,然后用jar作packing,这样需要的时间更长...请再耐心等待...

编译完成后,系统回到提示符下,可以make install了...好高兴啊~~~

FreeBSD# make install
===>  Installing for jdk-1.4.2p7_1
===>   jdk-1.4.2p7_1 depends on executable: javavm - found
... 跳过 ...      
=> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
urw-fonts.tar.gz                              100% of 1508 kB 8099  Bps 00m 00s
... 跳过 ...
===>   Registering installation for urwfonts-1.0
===>   Returning to build of jdk-1.4.2p7_1
... 跳过 ...
===>   Registering installation for jdk-1.4.2p7_1                             
===> SECURITY REPORT:                                                         
      This port has installed the following files which may act as network    
      servers and may therefore pose a remote security risk to the system.    
/usr/local/jdk 1.4.2 /jre/lib/i386/native_threads/libhpi.so                     
/usr/local/jdk1.4.2/jre/lib/i386/client/libjvm.so                             
/usr/local/jdk1.4.2/jre/lib/i386/libnio.so                                    
/usr/local/jdk1.4.2/jre/lib/i386/libdt_socket.so                              
/usr/local/jdk1.4.2/jre/lib/i386/server/libjvm.so                             
/usr/local/jdk1.4.2/jre/javaws/javawsbin                                      
                                                                              
      If there are vulnerabilities in these programs there may be a security  
      risk to the system. FreeBSD makes no guarantee about the security of    
      ports included in the Ports Collection. Please type 'make deinstall'    
      to deinstall the port if this is a concern.                             
                                                                              
      For more information, and contact details about the security            
      status of this software, see the following webpage:                     
http://www.freebsd.org/java/                                                  
FreeBSD#

接下来就是常规的,make clean, make distclean,删除不想要的distfiles了!
不过不要忘记了给Java设定JAVA_HOME和CLASSPATH的环境变量,最后就可以看到Java的版本信息:

 
FreeBSD# cd /usr/local/jdk 1.4.2 /bin
FreeBSD# java -version
java version "1.4.2-p7"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-p7-root_06_oct_2005_21_31)
Java HotSpot(TM) Client VM (build 1.4.2-p7-root_06_oct_2005_21_31, mixed mode)

FreeBSD中编译JDK相关推荐

  1. 关于使用JAVA中JDK安装和在命令行中编译和运行程序的一些总结

    JDK安装:http://www.oracle.com/technetwork/java(可以选择安装路径) (在写下载这个JDK时需要先创建账户) 1.下载完之后就可以安装了,安装路径自己可以设置, ...

  2. 自己动手,在macOS High Sierra中编译一个可debug的JDK

    背景 由于最近想分析几个native方法,所以需要手头有一个可以debug的JDK,因此,这两天折腾了折腾,踩了10+个坑,看了10+篇文章,尝试了10+次,最后总算把JDK给编出来了,当在自己编译出 ...

  3. java调用clang编译的so_写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

    好奇害死羊 很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上. 一般来说,我们学Java之前,第一步就是安装JDK环 ...

  4. nashorn预编译_Java 8:在新的Nashorn JS引擎中编译Lambda表达式

    nashorn预编译 在最近的一篇文章中,我了解了Java 8和Scala如何实现Lambda表达式. 众所周知,Java 8不仅引入了对Javac编译器的改进,而且还引入了全新的解决方案-Nasho ...

  5. Java 8:在新的Nashorn JS引擎中编译Lambda表达式

    在最近的一篇文章中,我了解了Java 8和Scala如何实现Lambda表达式. 众所周知,Java 8不仅引入了对Javac编译器的改进,而且还引入了全新的解决方案-Nashorn. 这个新引擎旨在 ...

  6. 开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 7月份,一名匿名研究员向 ZDI 报告了 FreeBSD 中的一个本地提权漏洞.它位于 FreeBSD 的文件传输协议守护进程 (ft ...

  7. 在Idea2017.1中编译时发生如下的错误

    错误 在Idea2017.1中编译时发生如下的错误 Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8 Information:java: Errors ...

  8. FreeBSD中安装源的方法

    FreeBSD中安装软件一般有两种方式: (一).使用pk_add -r Package 来安装软件,Package安装的是已经编译好的二进制软件包,Package默认下载软件包的路径是在/var/d ...

  9. Ubuntu 编译jdk源码

    Ubuntu 编译jdk源码 一 下载需要的依赖文件 sudo apt-get install libfreetype6-dev sudo apt-get install libcups2-dev s ...

最新文章

  1. 网红 AI 高仿坎爷发布说唱情歌,歌迷:堪比真人原声
  2. 专属个人的聊天机器人的实现——图灵机器人
  3. arraylist转int数组_五千字的数组拓展,面试官对我竖起大拇指喊停
  4. python爬虫中for循环无法每一段输出_1024程序员节送你一套爬虫玩玩
  5. eclipse下拉框里的选项怎么鼠标单击表判断_领导让我预测下一年销量,怎么办?...
  6. php角色权限安全,php – 安全的chmod权限?
  7. oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...
  8. 带刺的下沉市场:小镇青年要的不止是9块9包邮
  9. Java 8 中处理集合的优雅姿势——Stream
  10. Windows Azure Cloud Service (42) 使用Azure In-Role Cache缓存(1)Co-located Role
  11. mysql 一对多查询组成单表字段_单表多字段MySQL模糊查询的实现
  12. python初级工程师面试题_Python工程师面试题
  13. Cmder安装使用篇
  14. 《生物化学与分子生物学》----蛋白质----听课笔记(四)
  15. 程序猿一些实用学习网址
  16. 电流型和电压型PHY
  17. Android开发 第2课 控件TextView、Plain Text、ImageView、 Button、ImageButton以及点击事件
  18. 读取本地文件转化成MultipartFile
  19. 线程池:酷我音乐网站热歌排行榜里面的歌曲!
  20. 通过插画理解kubernetes基本概念

热门文章

  1. vue vue-seamless-scroll 无缝滚动依赖
  2. ThinkPHP验证码错误解决过程
  3. 第二阶段--团队冲刺--第九天
  4. 知乎上的48条神回复!看完人生透彻了许多!
  5. 今日头条能干掉微信么? | 畅言
  6. __construct 与 __destruct 区别
  7. 英语-专业论文写作的八大特征
  8. 一般博士毕业能进什么样的高校当老师?网友:看第一学历!
  9. 成功_专业_社交_意识
  10. 怎么绘制旋转Chem3D模型