【什么是源码 - 知乎】【二七棋牌源码程序】【java项目教程源码】mac openjdk源码

时间:2024-11-30 20:44:59 来源:黑马先知指标源码 编辑:源码 仿造下单

1.如何用Mac完美编译OpenJDK 7
2.Mac10.15.7上编译OpenJDK8u
3.JDK基础概念及目录结构
4.开源编译器有哪些

mac openjdk源码

如何用Mac完美编译OpenJDK 7

       1.选择OS X版本很重要。

              目前这里Mac版本是.,配置好必要信息以后就开始编,结果错误满屏。简单看过之后发现是编译C文件的时候参数有误,于是查了一下,才知道是LLVM版本太新,不兼容低版本的一些编译参数。照着上面改了点代码,但是依旧编译不过。既然高版本不行,就装个低版本的呗。由于最新的OS X不能装低版本的Xcode(装了Xcode才能装LLVM),所以去下了一个.8的OS X装在虚拟机里,然后再装个Xcode4.4。

              装好Xcode以后,要手动下载LLVM安装。打开Xcode,随便建立一个空项目,然后打开Preferences,找到如下所示的地方开始安装

       ç¬¬ä¸€æ­¥å’±å°±è¿™ä¹ˆæžå®šäº†ã€‚

       2.安装X

               X这玩意是unixç±»os使用的图形系统,.8以前的OS X是自带的,但是从此以后就不自带了。对应于Mac,你需要装XQuartz,这个没有版本限制,去网上下最新版即可。装这个的原因是当时在编译PolicyTools的时候出现了如下错误:

       ld: library not found for -lX

       å®‰è£…以后要为X建立软连接

       sudo ln -s /usr/X/include/X /usr/include/X

       3.安装freetype

              在linux下编译openjdk的朋友可能遇到过需要安装freetype的要求,然后安装下并将安装目录加到环境变量里就好了。但是OS X不一样,freetype单独安装实际是没用的。虽然单独安装能让编译前的检查通过,但是到后面还是会出错,至于原因我没找到。那怎么办呢?实际上如果安装好X,freetype就一起安装好了,大家可以去X的目录里看看是否有freetype。

       è™½ç„¶è¯´å®‰è£…了X就自带freetype,但是编译过程中可能会出现如下错误:

       error: freetype/config/ftheader.h: No such file or directory

       å®žé™…上就是目录问题,执行下面这句命令就好了:

       sudo ln -s /sr/X/include/freetype2/freetype/ /usr/X/include/freetype

       4. 配置环境变量

              和在Linux下编译相比,OS X的环境变量配置相对来说简单很多。只需要配置编译需要的jdk和llvm的目录就可以了。

              因为很多源代码都是用本机现有的jdk来编译,所以预装一个低版本的jdk是必须的,这里我们需要安装jdk6。安装好以后,找到其安装目录,并添加如下环境变量:

       [plain] view plaincopy

       export ALT_BOOTDIR=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home  

              通常来说安装目录都应该在/System/Library/Java/JavaVirtualMachines目录下。如果不在的话,有个技巧可以找到。因为安装好jdk以后,系统会自动在/usr/bin下建立指向java命令的软连接,所以执行“ls -l /usr/bin/java”就能看到这个命令指向哪,然后这么顺着找下去就能找到。

              llvm是编译C类文件所必须的,所以要把它的所在目录添加到环境变量里。通常OS X下安装app都会把app移到Applications目录下,所以我最初安装Xcode的时候也把他移进去了,如果你把Xcode放在了别的目录,那就找到对应的目录即可。

       [plain] view plaincopy

       export ALT_COMPILER_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin  

       5.获取编译源码

       æŒ‰ç…§è¿™ä¸Šé¢çš„第三点获取源代码  å¦‚果没有装hg的需要自行安装

       åˆ°çŽ°åœ¨ä¸ºæ­¢ï¼Œç¼–译前的准备工作已经完成。我们可以先执行make sanity执行下编译前的检查。如果检查通过,先来看看具体的编译命令:

       [plain] view plaincopy

       make ALLOW_DOWNLOADS=true SA_APPLE_BOOT_JAVA=true SKIP_DEBUG_BUILD=false SKIP_FASTDEBUG_BUILD=false ALWAYS_PASS_TEST_GAMMA=true HOTSPOT_BUILD_JOBS=`sysctl -n hw.ncpu`  

       è¿™é‡Œæœ‰ä¸¤ä¸ªé—®é¢˜ï¼š

       a. ALLOW_DOWNLOADS=true表示编译过程中允许下载。因为有些编译模块,比如jaxp,编译脚本中指定了需要下载特定的包。虽然我没试过设置成false会不会影响编译,但是还是推荐设置成true。但是这就带来另一个问题,下载这类包很费时间,有时候就会在那卡很长时间,所以我根据编译日志找到编译脚本中控制下载的具体命令,修改修改并且把用迅雷下的对应包放到正确目录中,然后重新编译一遍,就能顺利通过了。这一点后面我会详说。

       b. SKIP_DEBUG_BUILD=false SKIP_FASTDEBUG_BUILD=false这两个表示编译出来的jdk或者hotspot是否可以debug。FASTDEBUG表示的应该是提供简单的debug功能,如果想要完整的debug,则SKIP_DEBUG_BUILD必须设置为false。不过这里提醒一点,如果想在debug jdk的时候能看到debug信息,比如变量名等,只需要SKIP_FASTDEBUG_BUILD设置为false就可以了

       å¦‚果这两个问题都不是问题,那么就可以按回车了。如果debug和fastdebug都是false,再加上用虚拟机编译,所以需要的时间会比较长,你也许需要找一部长一点的电影来消磨一下了。最后编译出来的结果是这样的:

       j2sdk-image就是自己编译出来的jdk,可以直接用了。至于其他目录下的内容,各位自己琢磨吧。

       çŽ°åœ¨æ¥è¯´ä¸‹ALLOW_DOWNLOADS=true引起的问题。

       ä½†æ˜¯é‡åˆ°ä¸‹è½½å¾ˆä¹…的包总共有三个:

       jaxp_.zip、jdk7-jaf-__.zip、jdk7-jaxws2_2_4-b-__.zip

       ä¹‹å‰è¯´è¿‡å¯ä»¥ä¿®æ”¹ç¼–译脚本跳过下载并且用我们已经下载好的,但是实际编译过程中,这三个包对应的的编译脚本是动态生成的,所以只能等到他卡在那了,才能停下来并找到脚本修改之。因此因为这三个包,总共需要停3次。,比起一直卡在那好太多了。

       å‡è®¾ç¼–译的是普通版本,即非DEBUG和非FASTDEBUG。下面以jaxp_.zip为例子讲一下怎么修改对应脚本:

       è„šæœ¬æ‰€åœ¨ä½ç½®ï¼šopenjdk根目录/build/macosx-universal/jaxp/build/xml_generated/build-drop-jaxp_src.xml

Mac..7上编译OpenJDK8u

       本文指导如何在Mac..7系统上编译OpenJDK8u。源码

       首先,源码请注意,源码若在编译JDK8时遇到问题,源码请考虑使用JDK8u版本,源码以简化流程。源码什么是源码 - 知乎

       1. 开始时,源码进入本地目录并下载源代码。源码如使用代理,源码请确保设置正确,源码以免下载过程因超时或网络速度慢而受阻。源码

       2. 然后获取构建过程中所需的源码额外存储库。此步骤可能较慢,源码请耐心等待。源码

       3. 接下来检查配置并执行 `bash ./configure` 命令。源码二七棋牌源码程序

       4. 确保配置成功后,通过执行 `make` 命令进行编译。执行 `make images` 命令,编译过程耗时较长,请耐心等待。

       编译成功后,应在 `build` 目录下发现 `images` 文件夹,内含编译出的镜像文件。

       5. 为测试编译结果,请进入编译输出的目录(具体路径根据您的机器配置而定),如 `/Users/mango/git/openjdk8u/build/macosx-x_-normal-server-release/images/j2sdk-image/bin`。然后执行 `java -version` 命令。将 `j2sdk-bundle` 文件夹中的软件包复制到 `/Library/Java/JavaVirtualMachines/` 目录下,并在IDE中配置使用。java项目教程源码

       在编译过程中,可能会遇到各种问题,但本文不详细列出解决方法。在遇到问题时,请查阅相关文档或资料进行尝试解决。

JDK基础概念及目录结构

       探索Java开发基石:JDK概念与目录结构详解</

       Java开发环境的基石就是Java Development Kit (JDK),它不仅包含了Java编译器、调试工具和javadoc等实用工具,而且是将Java源代码编译为跨平台可执行字节码的关键。默认情况下,JDK使用Hotspot VM进行解释执行,OpenJDK则是其开源版本,尽管在授权协议和源代码完整性方面与SUN/Oracle JDK有所不同,但都为Java编程提供了强大的web上传文件源码支持。

       深入探讨JDK的内部结构,我们先来看一个典型的目录结构示例(以CentOS 7和JDK 1.8为例):bin、COPYRIGHT、db、include、jre、lib、LICENSE、man、README和src.zip等文件夹,每一个都承载着特定的功能和职责。

bin</: 这个目录犹如Java开发者的瑞士军刀,存储了Java工具(如java、javac和javadoc)以及关键的祥云发卡源码下载工具jar(如dt.jar和tools.jar),是日常开发中不可或缺的部分。

COPYRIGHT</: 保护着JDK的版权信息,提醒我们尊重和遵守版权法规。

db</: 包含Java数据库相关资源,但现代Java应用更多依赖于数据库驱动,而非这个目录。

include</: C语言头文件的天堂,如JNI(Java Native Interface)头文件JNI.h,用于Java与C/C++代码的交互。

lib</: 精华所在,Java类库的宝库,包含dt.jar和tools.jar,它们在CLASSPATH中占据重要位置,如rt.jar(核心类库,如java.lang, java.io, java.net, java.util)和平台特定库。

src.zip</: 提供Java类库源码,包括rt.jar关键部分和启动器源码,是深入理解Java源码的绝佳入口。

jre</: Java运行环境的核心,包含bin(如java[.exe])、lib(rt.jar和动态链接库)以及针对不同架构的子目录,如amd(JVM库libjvm.so)。

dt.jar</:尽管在现代GUI开发中使用较少,但Swing包依然对Java图形界面设计至关重要。

tools.jar</:工具类库,包括编译器和文档生成器,如javac.exe和javadoc.exe,简化了开发者的工作流程。

       CLASSPATH设置:$.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar,这个环境变量确保了IDE能正确引用JDK的类库。

       对于IDE用户,如Mac上的IntelliJ IDEA,类库结构的洞察有助于理解代码执行的底层逻辑。它展示了代码是如何通过JDK的各个组件协同工作的。

       最后,虽然我们已经掌握了JDK的基础,但Java世界的深奥远不止于此。深入阅读源代码,探究Java类库和JVM的工作原理,是提升编程技能和理解力的不二法门。

开源编译器有哪些

       开源编译器有很多,以下是其中一些常见的开源编译器:

       1. GCC(GNU编译器集合)

       GCC是一款非常流行的开源编译器,支持多种编程语言,如C、C++、Fortran等。它提供了多种平台上的编译工具,可在多种操作系统上运行,包括Linux、Windows和macOS等。GCC具有高度的可配置性和灵活性,可以优化代码的性能和可移植性。

       2. Clang(LLVM编译器)

       Clang是一种基于LLVM(Low Level Virtual Machine)的开源编译器,支持多种编程语言,包括C、C++和Objective-C等。Clang以其高效的编译速度和良好的代码生成质量而闻名。它还提供了丰富的工具链,包括静态分析器和优化器等,可以帮助开发人员发现和修复代码中的错误。

       3. MSVC(Microsoft Visual C++)

       虽然MSVC主要不是作为开源编译器出现的,但它的某些版本提供了一些开源的特性。MSVC是一个为Windows操作系统设计的C++编译器,它的开发环境提供了丰富的集成开发功能,包括调试、图形用户界面设计等。近年来,随着开源软件的普及,Microsoft也逐渐开始向开源社区开放了一些MSVC的功能和资源。

       4. ICC(Intel C++ Compiler)

       虽然ICC是Intel公司推出的商业编译器产品,但其部分功能和部分源代码的开源也为开发者带来了极大的便利。它可以优化基于Intel硬件的程序性能。在特定的操作系统平台上使用Intel的优化技术,可以让代码的性能达到最优状态。在一些项目中也可以选择开源的版本来使用。此外还有一些专项语言或平台的开源编译器,例如针对Java的OpenJDK编译器等。开发者可以根据实际需求选择合适的开源编译器进行开发。

copyright © 2016 powered by 皮皮网   sitemap