1.Mac10.15.7上编译OpenJDK8u
2.å¦ä½ç¨Macå®ç¾ç¼è¯OpenJDK 7
3.JDK基础概念及目录结构
4.开源编译器有哪些
5.React Native 0.74 Android 环境搭建指南
Mac10.15.7上编译OpenJDK8u
本文指导如何在Mac..7系统上编译OpenJDK8u。源码
首先,源码请注意,源码若在编译JDK8时遇到问题,源码请考虑使用JDK8u版本,源码以简化流程。源码星夜直播源码app
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中配置使用。
在编译过程中,可能会遇到各种问题,但本文不详细列出解决方法。在遇到问题时,请查阅相关文档或资料进行尝试解决。
å¦ä½ç¨Macå®ç¾ç¼è¯OpenJDK 7
å段æ¶é´ä¸ºäºç 究JVMï¼äºæ¯å»ä¸äºOpenJDK6ç¼è¯ä¸æï¼å°±å 为å°å£°å¡é©±å¨ï¼å没æ¥å°å¦ä½è§£å³ï¼ç»ææ»æ¯ç¼è¯ä¸æåï¼éæ¾å¼ãä½æ¯è¿æ¥è°è¯jdkæºç çæ¶åï¼åç°å¾å¤è°è¯ä¿¡æ¯é½æ²¡æï¼çå¾æé£ä¸ªè¾è¦åãæ£å¥½ä¸æåæåç¼è¯äºOpenJDK7ï¼æå°±åå»ä¸äºä¸ä¸ªè¯ç¼ï¼è½ç¶å¨CentOSä¸æåäºï¼ä½æ¯æMacä¸åç¨ä¸äºï¼æ以æå°±è±äºç¹æ¶é´å次å¨Macä¸å¼ä¸æ¬¡ãæ´ä½æ¥è¯´è¿ç®é¡ºå©ï¼ç°å¨å·²ç»å¾å¼å¿çç¨ä¸äºã
1.éæ©OS Xçæ¬å¾éè¦ã
ç®åæçMacçæ¬æ¯.ï¼ä¸å¼å§æ²¡æ³é£ä¹å¤ï¼é ç½®å¥½å¿ è¦ä¿¡æ¯ä»¥åå°±å¼å§ç¼ï¼ç»æé误满å±ãç®åçè¿ä¹ååç°æ¯ç¼è¯Cæ件çæ¶ååæ°æ误ï¼äºæ¯æ¥äºä¸ä¸ï¼æç¥éæ¯LLVMçæ¬å¤ªæ°ï¼ä¸å ¼å®¹ä½çæ¬çä¸äºç¼è¯åæ°ï¼å ·ä½çå¯ä»¥ççè¿ç¯æç« /blog/ ç第8ç¹ãæä¹ç §çä¸é¢æ¹äºç¹ä»£ç ï¼ä½æ¯ä¾æ§ç¼è¯ä¸è¿ãè¿æ¶ææ³å°ä¸ä¸ªå¾ç®åçåæ³ï¼æ¢ç¶é«çæ¬ä¸è¡ï¼æå°±è£ ä¸ªä½çæ¬çåãç±äºææ°çOS Xä¸è½è£ ä½çæ¬çXcodeï¼è£ äºXcodeæè½è£ LLVMï¼ï¼æ以å»ä¸äºä¸ä¸ª.8çOS Xè£ å¨èææºéï¼ç¶ååè£ ä¸ªXcode4.4ï¼å°ååé¢éä¸ã
è£ å¥½Xcode以åï¼è¦æå¨ä¸è½½LLVMå®è£ ãæå¼Xcodeï¼é便建ç«ä¸ä¸ªç©ºé¡¹ç®ï¼ç¶åæå¼Preferencesï¼æ¾å°å¦ä¸æ示çå°æ¹å¼å§å®è£ ï¼å 为æå·²ç»å®è£ è¿äºï¼æ以æ¯Installedï¼
第ä¸æ¥å±å°±è¿ä¹æå®äºã
2.å®è£ X
Xè¿ç©ææ¯unixç±»os使ç¨çå¾å½¢ç³»ç»ï¼.8以åçOS Xæ¯èªå¸¦çï¼ä½æ¯ä»æ¤ä»¥åå°±ä¸èªå¸¦äºã对åºäºMacï¼ä½ éè¦è£ XQuartzï¼è¿ä¸ªæ²¡æçæ¬éå¶ï¼å»ç½ä¸ä¸ææ°çå³å¯ãè£ è¿ä¸ªçåå æ¯å½æ¶å¨ç¼è¯PolicyToolsçæ¶ååºç°äºå¦ä¸é误ï¼
ld: library not found for -lX
åé¢æ¥å°äºè¿ä¸ª/hgomez/obuildfactory/wiki/Building-and-Packaging-OpenJDK7-for-OSXæå»æ³çè¯è£ ä¸ä¸XQuartzæ解å³é®é¢çã
å®è£ 以åè¦ä¸º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 /usr/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.è·åç¼è¯æºç
æç §è¿ä¸é¢ç第ä¸ç¹è·åæºä»£ç /arungupta/entry/build_open_jdk_7_on å¦æ没æè£ 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
JDK基础概念及目录结构
探索Java开发基石:JDK概念与目录结构详解</ Java开发环境的基石就是Java Development Kit (JDK),它不仅包含了Java编译器、调试工具和javadoc等实用工具,而且是将Java源代码编译为跨平台可执行字节码的关键。默认情况下,JDK使用Hotspot VM进行解释执行,OpenJDK则是其开源版本,尽管在授权协议和源代码完整性方面与SUN/Oracle JDK有所不同,但都为Java编程提供了强大的支持。 深入探讨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的saas 建站系统源码基础,但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编译器等。开发者可以根据实际需求选择合适的开源编译器进行开发。React Native 0. Android 环境搭建指南
在移动应用开发领域,我们拥有多种选择,包括原生开发、混合开发和H5开发。其中,混合开发领域中,我们能够利用React Native与Android或iOS结合,创造出可在不同平台运行的移动应用。 本文将基于React Native 0.版本的官方文档,分步骤指导大家搭建React Native 0.的Android环境,并分享可能遇到的常见问题及解决方案。最终目标是构建出一个功能齐全的React Native Android应用。 我们使用的是以下环境:mac m1、java、react native 0.、android sdk 、ndk 、Android Studio Iguana | .2.1 Patch 1。希望这篇文章能帮助大家在开发移动应用时少走弯路,更加得心应手。 搭建过程分为四个主要步骤:安装依赖、初始化项目、运行项目和打包发布。第一步 安装依赖
遵循官方指南,我们选择安装macOS和Android原生构建教程所需的工具。1.1 安装Node、Watchman
确保Node版本为,推荐使用nvm(Node Version Manager)管理Node版本,以便切换至Node。1.2 安装JDK
如果电脑上已有JDK1.8版本,请确保替换为React Native 0.所需的版本。通过运行命令查看所有安装的JDK版本,若不符合要求,需按照官方指南安装相应版本的JDK。推荐使用Zulu OpenJDK以提高性能和稳定性。1.3 安装Android Studio
依据官方Android教程,安装Android编辑器、Android SDK和Android虚拟设备,为后续开发做好准备。第二步 初始化项目
首先删除本地react-native,然后初始化项目。初始化项目
项目结构如下: 完成根目录下的yarn i操作,下载所有npm依赖。第三步 运行项目
执行命令启动React Native服务,安装Android相关依赖,结合Android源码和配置生成apk文件,并将其安装至模拟器中运行。解决依赖安装问题
依赖需要设置为google地址和aliyun,避免网络问题影响依赖安装。若遇到ndk版本对应错误,需在Android编辑器中下载相应ndk版本。确保依赖版本与Android源码下的build.gradle文件声明一致。第四步 打包发布版本
目标是生成apk和aab版本,其中aab用于发布到应用商店,而apk可以直接安装到Android设备。应用签名
无论是向应用商店提交还是直接安装到手机,都需要对应用进行签名。在初始化项目时,应用采用debug.keystore进行签名,生成app-debug.apk。对于发布版本,需生成发布版本的证书文件。在macOS上,通过执行特定命令找到JDK目录,使用具有sudo权限的keytool命令生成证书文件,重命名后放置在安卓app目录下。解决在配置过程中遇到的提示问题,新建keystore.properties文件,重新编写构建配置,并修改signConfigs进行读取。注意debug和release使用同一签名以避免在调试和发布时包名不一致导致无法覆盖安装。构建发布版本
使用命令生成release apk版本,使用另一命令生成aab版本,用于应用商店发布。最终,apk可直接安装到手机上,手机系统将进行证书检测和认证。 总结本文,我们通过依赖安装、项目初始化、项目运行和打包发布四个步骤详细阐述了React Native 0. Android环境的搭建过程。对于前端工程师而言,Android环境配置的难点在于其细节,但深入了解Android官网原理后,将对后续混合应用开发大有裨益。