请选择 进入手机版 | 继续访问电脑版

技术_方法_掌握技术,成就未来-6miu百度云

 找回密码
 立即注册
查看: 7|回复: 0

FreeBSD中编译JDK

[复制链接]

277万

主题

277万

帖子

832万

积分

论坛元老

Rank: 8Rank: 8

积分
8326212
发表于 2021-1-4 13:17:48 | 显示全部楼层 |阅读模式
自从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
      
     
      
[color=]
      

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

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

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

  
     
      
      
[color=]FreeBSD# cd /usr/portsFreeBSD# cvsup -g -L 2 /root/ports-supfile
      
     
      
[color=]
      

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

  
     
      
      
[color=]FreeBSD# cd /usr/ports/java/jdk14                                  FreeBSD# make
      
     
      
[color=]
      

  如果是初次编译,应该会看到下面的提示:


   
[color=]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/jdk14FreeBSD# 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
       /binFreeBSD# java -versionjava 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)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|技术_方法_掌握技术,成就未来-6miu百度云

GMT+8, 2021-1-19 06:34 , Processed in 1.891823 second(s), 19 queries .

合作伙伴:

盘搜搜 / 百度云搜索 / 盘多多 / 如风搜 / 小说阅读网 / 笔趣阁 / 文库 / 学术 / 小说排行榜 / 专利网 / 专利查询 / 网盘搜索 / 网盘 / 问医生 / 健康网 / APP开发 / 金蝶 / 软件定制 / 软件开发 / 教育app / ERP系统 / SAP / 分销系统 / 成都软件开发 / 小程序开发 / ERP / WMS / MES / LIMS / SCADA / PLM / PDM / 希沃 / SEEWO / OTO / O2O / 培训系统 / 在线问诊 / 在线问诊系统 / 医疗咨询系统 / 网店代运营 / 返利网 / 京东代运营 / 斯特封 / trelleborg / NOK / 斯凯孚 / SKF / 圣戈班 / Saint-Gobain / 派克汉尼汾 / parker / 洪格尔 / hunger / Merkel / 密封圈 /
快速回复 返回顶部 返回列表