自己动手编译Windows版的OpenJDK 7

PSCAD常见问题和官方解决办法总结 PSCAD官网提供了PSCAD中几乎所有能遇到的问题原因和解决办法,我将其中常用的内容翻译了出来,并将官网给出的大部分的问题通用的解决方法翻译在了文中。 阅读详情

备份,有时间了自己编译一个试试

 

 

声明:

  1. 本文来自于《深入理解Java虚拟机:JVM高级特性与最佳实践》第一章,转载请注明出处。
  2. 作者推荐大家对本文“看过就算”,真正要编译JDK的话,请不要选择在Windows平台编译,难度……嗯,应该说是“麻烦程度”比Linux平台编译高几个数量级。在Linux平台的JDK编译攻略,请参考撒迦这篇文章。相信我,哪怕你没有Linux环境,临时装一个ubuntu,加上安装操作系统的时间都比直接在Windows下编辑来得快。
  3. 如果要在Windows平台编译的话,看看是否需要把整个JDK(HotSpot、Library、Utils(如VisualVM等)、JAXWS、etc)都编译出来,相信大部分人只想要一个虚拟机,那可以关闭掉其他部分的编译,省事不少。但本文是按照“全部编译”来写的攻略。
-------------------------- 上面是唠叨,下面是攻略,我是分割线 --------------------------


1.5 实战:自己编译JDK

  想要一探JDK内部的实现机制,最便捷的路径之一就是自己编译一套JDK,通过阅读和跟踪调试JDK源码去了解Java技术体系的原理,虽然门槛会高一点,当肯定会比阅读各种文章、书籍来得更加贴近本质些。另外JDK中的很多底层方法都是Native的,需要跟踪这些方法的运作或对JDK进行Hack的时候,都需要自己编译一套JDK。
  现在网络上有不少开源的JDK实现可以供我们选择,如Apache Harmony、OpenJDK等。考虑到Sun系列的JDK是现在使用得最广泛的JDK版本,笔者选择了OpenJDK进行这次编译实战。


1.5.1 获取JDK源码

  首先确定要使用的JDK版本,OpenJDK 6和OpenJDK 7都是开源的,源码都可以在它们的主页(http://openjdk.java.net/)上找到,OpenJDK 6的源码其实是从OpenJDK 7的某个基线中引出的,然后剥离掉JDK 1.7相关的代码,从而得到一份可以通过TCK 6的JDK 1.6实现,因此直接编译OpenJDK 7会更加“原汁原味”一些,其实这两个版本的编译过程差异并不大。
  获取源码有两种方式。一是通过Mercurial代码版本管理工具从Repository中直接取得源码(Repository地址:http://hg.openjdk.java.net/jdk7/jdk7),这是最直接的方式,从版本管理中看变更轨迹比看什么Release Note都来得实在,不过坏处自然是太麻烦了一些,尤其是Mercurial远不如SVN、ClearCase或CVS之类的版本控制工具那样普及。另外一种就是直接下载官方打包好的源码包了,可以从Source Releases页面(地址:http://download.java.net/openjdk/jdk7/)取得打包好的源码,一般来说大概一个月左右会更新一次,虽然不够及时,但的确方便了许多。笔者下载的是OpenJDK 7 Early Access Source Build b121版,2010年12月9日发布的,大概81.7MB,解压出来约308MB。


1.5.2 系统需求

  如果可能,笔者建议尽量在Linux或Solaris上构建OpenJDK,这要比在Windows平台上轻松许多,而且网上能找到的资料绝大部分都是在Linux上编译的。如果一定要在Windows平台上编译,建议读者认真阅读一下源码中的README-builds.html文档(无论在OpenJDK网站上还是在下载的源码包里面都有这份文档),因为编译过程中需要注意的细节非常多。虽然不至于像文档上所描述的“Building the source code for the JDK requires a high level of technical expertise. Sun provides the source code primarily for technical experts who want to conduct research(编译JDK需要很高的专业技术,Sun提供JDK源码是为了技术专家进行研究之用)”那么夸张,但是如果读者是第一次编译,那在上面耗费一整天乃至更多的时间都很正常。
  笔者在本次实战中演示的是在32位Windows 7平台下编译x86版的OpenJDK(也就是32位的JDK),如果需要编译x64版,那毫无疑问也需要一个64位的操作系统。另外编译涉及的所有文件都必须存放在NTFS格式的文件系统中,因为FAT32格式无法支持大小写敏感的文件名。在官方文档上写到:编译至少需要512MB的内存和600MB的磁盘空间。如果读者耐心很好的话,512MB的内存基本上也可以凑合使用,不过600MB的磁盘空间仅仅是指存放OpenJDK源码和相关依赖项的空间,要完成编译,600MB肯定是无论如何都不够的,这次实战中所下载的工具、依赖项、源码,全部安装、解压完成最少(最少是指只下载C++编译器,不下载VS的IDE)需要超过1GB的空间。
  对系统的最后一点要求就是所有的文件,包括源码和依赖项目,都不要放在包含中文或空格的目录里面,这样做不是一定不可以,只是这样会为后续建立CYGWIN环境带来很多额外的工作,这是由于Linux和Windows的磁盘路径差别所导致的,我们也没有必要自己给自己找麻烦。


1.5.3 构建编译环境

  准备编译环境的第一步是去安装一个CYGWIN 。这是一个在Windows平台下模拟Linux运行环境的软件,提供了一系列的Linux命令支持。需要CYGWIN的原因是在编译中要使用GNU Make来执行Makefile文件(C/C++程序员肯定很熟悉,如果只使用Java,那把这个东西当做C++版本的ANT看待就可以了)。安装CYGWIN时不能直接默认安装,因为表1-2中所示的工具都不会进行默认安装,但又是编译过程中需要的,因此要在图1-6的安装界面中进行手工选择。

  表1-2 需要手工选择安装的CYGWIN工具

文件名分类包描述
ar.exeDevelbinutilsThe GNU assembler, linker and binary utilities
make.exeDevelmakeThe GNU version of the 'make' utility built for CYGWIN.
m4.exeInterpretersm4GNU implementation of the traditional Unix macro processor
cpio.exeUtilscpioA program to manage archives of files
gawk.exeUtilsawkPattern-directed scanning and processing language
file.exeUtilsfileDetermines file type using 'magic' numbers
zip.exeArchivezipPackage and compress (archive) files
unzip.exeArchiveunzipExtract compressed files in a ZIP archive
free.exeSystemprocpsDisplay amount of free and used memory in the system

  CYGWIN安装时的定制包选择界面如图1-6所示:


图1-6 CYGWIN安装界面

  建立编译环境的第二步是安装编译器。JDK中最核心的代码(Java虚拟机及JDK中Native方法的实现等)是使用C++语言及少量的C语言编写的,官方文档中说他们的内部开发环境是在Microsoft Visual Studio C++ 2003(VS2003)中进行编译,同时也在Microsoft Visual Studio C++ 2010(VS2010)中测试过,所以最好只选择这两个编译器之一进行编译。如果选择VS2010,那么在编译器之中已经包含了Windows SDK v 7.0a,否则可能还要自己去下载这个SDK,并且更新PlatformSDK目录。由于笔者没有购买Visual Studio 2010的IDE,所以仅仅下载了VS2010 Express中提取出来的C++编译器,这部分是免费的,但单独安装好编译器比较麻烦。建议读者选择使用整套Visual Studio C++ 2010或Visual Studio C++ 2010 Express版进行编译。
  需要特别注意的一点:CYGWIN和VS2010安装之后都会在操作系统的PATH环境变量中写入自己的bin目录路径,必须检查并保证VS2010的bin目录一定要在CYGWIN的bin目录之前,因为这两个软件的bin目录之中各自都有个连接器“link.exe”,但是只有VS2010中的连接器可以完成OpenJDK的编译。
  准备JDK编译环境的第三步就是下载一个已经编译好了的JDK。这听起来也许有点滑稽——要用鸡蛋孵小鸡还真得必须先养一只母鸡呀?但仔细想想其实这个步骤很合理:因为JDK包含的各个部分(Hotspot、JDK API、JAXWS、JAXP……)有的是使用C++编写的,而更多的代码则是使用Java自身实现的,因此编译这些Java代码需要用到一个可用的JDK,官方称这个JDK为“Bootstrap JDK”。而编译OpenJDK 7的话,Bootstrap JDK必须使用JDK6 Update 14或之后的版本,笔者选用的是JDK6 Update 21。
  最后一个步骤是下载一个Apache ANT,JDK中Java代码部分都是使用ANT脚本进行编译的,ANT版本要求在1.6.5以上,这部分是Java的基础知识,对本书的读者来说应该没有难度,笔者就不再详述。


1.5.4 准备依赖项

  前面说过,OpenJDK中开放的源码并没有达到100%,还有极少量的无法开源的产权代码存在。OpenJDK承诺日后将逐步使用开源实现来替换掉这部分产权代码,但至少在今天,编译JDK还需要这部分闭源包,官方称之为“JDK Plug”(注1) ,它们从前面的Source Releases页面就可以下载到。在Windows平台的JDK Plug是以Jar包的形式提供的,通过下面这条命令可以安装它:

Console代码 复制代码 收藏代码
  1. java –jar jdk-7-ea-plug-b121-windows-i586-09_dec_2010.jar

  运行后将会显示如图1-7的协议,点击ACCEPT接受协议,然后把Plug安装到指定目录即可。安装完毕后建立一个环境变量“ALT_BINARY_PLUGS_PATH”,变量值为此JDK Plug的安装路径,后面编译程序时需要用到它。


图1-7 JDK Plug安装协议


  除了要用到JDK Plug外,编译时还需要引用JDK的运行时包,这个是编译JDK中用Java代码编写的那部分所需要的,如果仅仅是想编译一个HotSpot虚拟机的话则可以不用。官方文档把这部分称之为“Optional Import JDK”,可以直接使用前面Bootstrap JDK的运行时包,我们需要建立一个名为“ALT_JDK_IMPORT_PATH”的环境变量指向JDK的安装目录。
  第三步是安装一个大于2.3版的FreeType ,这是一个免费的字体渲染库,JDK的Swing部分和JConsole这类工具要使用到它。安装好后建立两个环境变量“ALT_FREETYPE_LIB_PATH”和“ALT_FREETYPE_HEADERS_PATH”,分别指向FreeType安装目录下的bin目录和include目录。另外还有一点官方文档没有提到但必须要做的事情是把FreeType的bin目录加入到PATH环境变量中。
  第四步是下载Microsoft DirectX 9.0 SDK(Summer 2004),安装后大约有298MB,在微软官方网站上搜索一下就可以找到下载地址,它是免费的。安装后建立环境变量“ALT_DXSDK_PATH”指向DirectX 9.0 SDK的安装目录。
  第五步是去寻找一个名为“MSVCR100.DLL”的动态链接库,如果读者在前面安装了全套的Visual Studio 2010,那这个文件在本机就能找到,否则上网搜索一下也能找到单独的下载地址,大概有744KB。建立环境变量“ALT_MSVCRNN_DLL_PATH”指向这个文件所在的目录。如果读者选择的是VS2003,这个文件名应当为“MSVCR73.DLL”,应该在很多软件中都包含有这个文件,如果找不到的话,前面下载的“Bootstrap JDK”的bin目录中应该也有一个,直接拿来用吧。


1.5.5 进行编译

  现在需要下载的编译环境和依赖项目都准备齐全了,最后我们还需要对系统做一些设置以便编译能够顺利通过。
  首先执行VS2010中的VCVARS32.BAT,这个批处理文件的目的主要是设置INCLUDE、LIB、和PATH这几个环境变量,如果和笔者一样只是下载了编译器的话则需要手工设置它们,各个环境变量的设置值可以参考下面给出的代码清单1-1中的内容。批处理运行完之后建立“ALT_COMPILER_PATH”环境变量让Makefile知道在哪里可以找到编译器。
  再建立“ALT_BOOTDIR”和“ALT_JDK_IMPORT_PATH”两个环境变量指向前面提到的JDK 1.6的安装目录。建立“ANT_HOME”指向Apache ANT的安装目录。建立的环境变量很多,为了避免遗漏,笔者写了一个批处理文件以供读者参考,如代码清单1-1所示。

  代码清单1-1 环境变量设置

Bat代码 复制代码 收藏代码
  1. SET ALT_BOOTDIR=D:/_DevSpace/JDK 1.6.0_21
  2. SET ALT_BINARY_PLUGS_PATH=D:/jdkBuild/jdk7plug/openjdk-binary-plugs
  3. SET ALT_JDK_IMPORT_PATH=D:/_DevSpace/JDK 1.6.0_21
  4. SET ANT_HOME=D:/jdkBuild/apache-ant-1.7.0
  5. SET ALT_MSVCRNN_DLL_PATH=D:/jdkBuild/msvcr100
  6. SET ALT_DXSDK_PATH=D:/jdkBuild/msdxsdk
  7. SET ALT_COMPILER_PATH=D:/jdkBuild/vcpp2010.x86/bin
  8. SET ALT_FREETYPE_HEADERS_PATH=D:/jdkBuild/freetype-2.3.5-1-bin/include
  9. SET ALT_FREETYPE_LIB_PATH=D:/jdkBuild/freetype-2.3.5-1-bin/bin
  10. SET INCLUDE=D:/jdkBuild/vcpp2010.x86/include;D:/jdkBuild/vcpp2010.x86/sdk/Include;%INCLUDE%
  11. SET LIB=D:/jdkBuild/vcpp2010.x86/lib;D:/jdkBuild/vcpp2010.x86/sdk/Lib;%LIB%
  12. SET LIBPATH=D:/jdkBuild/vcpp2010.x86/lib;%LIB%
  13. SET PATH=D:/jdkBuild/vcpp2010.x86/bin;D:/jdkBuild/vcpp2010.x86/dll/x86;D:/Software/OpenSource/cygwin/bin;%ALT_FREETYPE_LIB_PATH%;%PATH%


  最后还需要再进行两项调整,官方文档没有说明这两项,但是必须要做完才能保证编译过程的顺利通过:一是取消环境变量JAVA_HOME,这点很简单;另外一项是尽量在英文的操作系统上编译,估计大部分读者会感到比较为难吧。如果不能在英文的系统上编译就把系统的文字格式调整为“英语(美国)”,在控制面板-区域和语言选项的第一个页签中可以设置。如果这个设置还不能更改就建立一个“BUILD_CORBA”的环境变量,将值设置为false,取消编译CORBA部分。否则Java IDL(idlj.exe)为*.idl文件生成CORBA适配器代码的时候会产生中文注释,而这些中文注释会因为字符集的问题而导致编译失败。
  完成了上述繁琐的准备工作之后,我们终于可以开始编译了。进入控制台(Cmd.exe)后运行刚才准备好的设置环境变量的批处理文件,然后输入bash进入Bourne Again Shell环境(习惯sh或ksh的读者请自便)。如果JDK的安装源码中存在“jdk_generic_profile.sh”这个Shell脚本,先执行它,笔者下载的OpenJDK 7 B121版没有这个文件了,所以直接输入make sanity来检查我们前面所做的设置是否全部正确。如果一切顺利几秒钟之后会有类似代码清单1-2所示的输出。

  代码清单1-2 make sanity检查

Console代码 复制代码 收藏代码
  1. D:/jdkBuild/openjdk7>bash
  2. bash-3.2$ make sanity
  3. cygwin warning:
  4. MS-DOS style path detected: C:/Windows/system32/wscript.exe
  5. Preferred POSIX equivalent is: /cygdrive/c/Windows/system32/wscript.exe
  6. CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  7. Consult the user's guide for more details about POSIX paths:
  8. http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
  9. ( cd ./jdk/make && /
  10. ……因篇幅关系,中间省略了大量的输出内容……
  11. OpenJDK-specific settings:
  12. FREETYPE_HEADERS_PATH = D:/jdkBuild/freetype-2.3.5-1-bin/include
  13. ALT_FREETYPE_HEADERS_PATH = D:/jdkBuild/freetype-2.3.5-1-bin/include
  14. FREETYPE_LIB_PATH = D:/jdkBuild/freetype-2.3.5-1-bin/bin
  15. ALT_FREETYPE_LIB_PATH = D:/jdkBuild/freetype-2.3.5-1-bin/bin
  16. OPENJDK Import Binary Plug Settings:
  17. IMPORT_BINARY_PLUGS = true
  18. BINARY_PLUGS_JARFILE = D:/jdkBuild/jdk7plug/openjdk-binary-plugs/jre/lib/rt-closed.jar
  19. ALT_BINARY_PLUGS_JARFILE =
  20. BINARY_PLUGS_PATH = D:/jdkBuild/jdk7plug/openjdk-binary-plugs
  21. ALT_BINARY_PLUGS_PATH = D:/jdkBuild/jdk7plug/openjdk-binary-plugs
  22. BUILD_BINARY_PLUGS_PATH = J:/re/jdk/1.7.0/promoted/latest/openjdk/binaryplugs
  23. ALT_BUILD_BINARY_PLUGS_PATH =
  24. PLUG_LIBRARY_NAMES =
  25. Previous JDK Settings:
  26. PREVIOUS_RELEASE_PATH = USING-PREVIOUS_RELEASE_IMAGE
  27. ALT_PREVIOUS_RELEASE_PATH =
  28. PREVIOUS_JDK_VERSION = 1.6.0
  29. ALT_PREVIOUS_JDK_VERSION =
  30. PREVIOUS_JDK_FILE =
  31. ALT_PREVIOUS_JDK_FILE =
  32. PREVIOUS_JRE_FILE =
  33. ALT_PREVIOUS_JRE_FILE =
  34. PREVIOUS_RELEASE_IMAGE = D:/_DevSpace/JDK 1.6.0_21
  35. ALT_PREVIOUS_RELEASE_IMAGE =
  36. Sanity check passed.


  Makefile的Sanity检查过程输出了编译所需的所有环境变量,如果看到“Sanity check passed.”说明检查过程通过了,可以输入“make”执行整个Makefile,然后就去喝个下午茶再回来了,笔者Core i5 / 4GB RAM的机器编译整个JDK大概需要半个小时多点。如果失败则需要根据系统输出的失败原因,回头再检查一下对应的设置。并且最好在下一次编译之前先执行“make clean”来清理掉上次编译遗留的文件。
  编译完成之后,打开OpenJDK源码下的build目录,看看是不是已经有一个编译好的JDK在那里等着了?执行一下“java -version”,看到以自己机器命名的JDK了吧,很有成就感吧?

windows10编译openjdk详细步骤与经验总结 一、前言 现在要编译的是openjdk12,编译成的虚拟机位数为64位,操作系统是64位的win10;不满足以上需求的请慎重参考此文。 以下操作可能不适用于编译更低版本的openjdk,但可能适用于更高的版本。而且随着cygwin中包的更新,可能就会出现问题。 openjdk的编译和调试过程可以参考《深入理解java虚拟机》第一章,或《HotSpot实战》第一章(但基本没啥用,哈哈)。 最权威的参考在你下载并解压的源码中,路径是: doc/building.html(较低版本的不一定)。可以用谷歌浏览器打开 阅读详情

相关推荐

linux编译openjdk8

最近在看《深入理解java虚拟机》,第一章主要讲java历史,有点意思的是编译openjdk,想自己试着搞搞,但是书上编译的是7,而且要配置一堆的配置文件,就上网查查,openjdk8貌似不用配置这么多,就试着编译8。纪录一下操作过程。 ** 编译 ** 系统:centOs 7.5 64位(刚开始用的腾讯云1核1g,编译的时候说内存不够,好在腾讯云5天免费退,改成1核2g) 1、下载openjdk...

Michael曾的博客 5229

cygwin "nodosfilewarning" warning

编译完C++的程序后出现图示内容:内容如下:cygwin warning: MS-DOS style path detected: C:\NetBeans 6.8\dlight2\bin\nativeexecution\dorun.sh Preferred POSIX equivalent is: /cygdrive/c/NetBeans 6.8/dlight2/bin/nativeexecu

Jingle的专栏 2971

OpenJDK8 编译,调试和目录结构

目录 一、下载源码 二、编译 三、搭建开发环境 四、GDB调试 五、目录结构说明 一、下载源码 可选择在OpenJDK(http://hg.openjdk.java.net/jdk8u)的官方代码仓库下载zip包,如下图所示: 可选择命令行的方式,先执行sudo yuminstall Mercurial 安装类似git的仓库管理工具hg,然后执行hg clon...

菜鸟进阶之路 7479

RMySQL数据库编程指南

R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。 R语言作为统计学一门语言,一直在小众领域闪耀着光芒。直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用...

fens的博客 346

Windows10下编译openjdk16

Windows10下编译openjdk16 之前编译过openjdk8,但在windows下编译器支持不是很有好,虽然能够调试,但很多报红,对于有强迫症的人来说不能忍受。发现Clion对于新版本jdk能够自动编译构建,包括集成vs工具链,最终目标是全自动,且没有报红。 准备工作:阅读https://github.com/openjdk/jdk16/blob/master/doc/building.md。首选当然是官方文档,参考这个才能避免更多错误。 一. 工具 openjdk16。选择了当前最新版本

qiub649691422的博客 1179

【NLP】使用 PyTorch 从头构建自己的大型语言模型 (LLM)

如果我们在 n 维空间中绘制一个向量,看起来相似的物体(如狗和猫)将彼此靠近,而看起来不相似的物体(如学校和家庭)的嵌入向量将位于更远的地方。为此,我们将使用一种流行的标记器,称为 BPE 标记器,这是一种子词标记器,正在 GPT3 等模型中使用。:前馈网络使用深度神经网络来学习两个线性层(第一层有 d_model 节点,第二层有 d_ff 节点,根据注意力论文分配值)中嵌入向量的所有特征,并且将 ReLU 激活函数应用于第一线性层的输出,为嵌入值提供非线性,并应用 dropout 以进一步避免过度拟合。

sikh_0529的博客 1950

openjdk7 在windows下编译过程及总结

系统: WindowsXP SP3   一、软件安装  我所安装的软件版本下载地址: http://pan.baidu.com/s/1gzeV0 密码: 2pb4    注意所有的软件安装路径不要有空格,如果已经安装的软件路径有空格的可以使用junction.exe 工具,在cmd下cd到junction目录执行:junction D:\BuildOpenJDK\MicrosoftS...

iteye_3405的博客 667

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

windows10编译OpenJDK8

Windows10编译OpenJDK8 前言 本文基于win10(64位)编译openjdk8,碰到各种问题被卡住,最终还好编译完成,总结如下,希望对你有帮助 1. 环境准备 Windows 10 oracleJDK8 官方下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.h...

十十办文武的博客 4610

5.1 Tessent Atpg系列 第八章 Test Pattern Generation - Verify Test Pattern

为什么要做基于timing的仿真,意义在于可以比较ATPG工具和simulator工具的差异性。因为时序的差异导致不同的结果。首先你需要通过write_patern 这句cmd来写出pattern,默认是parallel 模式,除非你用-serial 指定写出serial, 因为serial 文件非常大,所以你可以使用-sample 开关写出部分pattern即可,工具会根据每一种pattern 类型都会至少保存一只。 另外,你也可以使用-start -end 开关来减少文件大小,但是这样的截取,是不可靠的

ciscomonkey的博客 7762

2、TCGA数据处理(差异分析前处理)

注意:1、是R语言中用于读取文本文件并创建数据框的函数。它可以从文本文件中读取数据并将其存储为数据框的形式,每一列代表一个变量,每一行代表一个观察值。2、括号要成对,不能少了;3、file = 'TCGA-LIHC.htseq_counts.tsv'引号可以是单或双引号,建议单;4、逗号主要中英文,都是用英文模式才没错;5、.tsv文件类型必须要有,不能删除,否则读不进来;6、上面代码将TCGA-LIHC.htseq_counts.tsv文件读入并赋值给count1。

PLW_12的博客 2668

编译OpenJDK12——Windows 11系统

OpenJDK、Windows 11 SDK、Cygwin、Visual Studio

难拳的博客 2334

TypeScript版LangChain环境配置全攻略:从零搭建AI应用开发环境

大语言模型(LLM)作为当前AI应用开发的核心技术,通过API接口为开发者提供了强大的自然语言处理能力。其工作原理基于Transformer架构,通过预训练和微调实现对人类语言的深度理解与生成。在工程实践中,开发者需要将LLM与外部工具、数据源和业务逻辑有效集成,这正是LangChain框架的技术价值所在——它提供了标准化的组件和接口,简化了复杂AI应用的构建流程。应用场景涵盖智能客服、内容生成、数据分析助手等多个领域。本文聚焦于TypeScript/JavaScript生态下的LangChain开发,详细

weixin_29055699的博客 253

Windows 7下构建OpenJDK7

介绍了本人在Windows 7下编译OpenJDK的过程。   一、获取JDK源码           在http://download.java.net/openjdk/jdk7/下载最新的OpenJDK7源码openjdk-7-fcs-src-b147-27_jun_2011.zip,将其解压到E:盘目录下。         由于该openjdk的jaxp和jaxws目录下并不包含J

gnefniu的专栏 4434

如何加载交易策略EA到MT4/MT5

1、打开MT4/MT5软件 2、首先,必须有一个EA,而且必须是mq4/ex4为扩展名。点击左上角“文件”—“打开数据文件夹”,找到安装路径 3、将EA的ex4或mq4文件放到MT4目录\MQL4\Experts里面(本文以名为Demo的EA为例) 4、如果有DLL库文件,复制到experts目录下的libraries子目录中 5、如果有tpl模板文件,复制到templates目录中 6、添加完成后重启MT4,点击允许EA运行图标 7、在导航中找到刚才安装的EA,拖拽到...

weixin_41364817的博客 7362

全面讲解电子齿轮比与脉冲数计算

什么是编码器分辨率。

viixin的博客 1万+

openjdk windows 编译

前记   如果你不是闲着蛋疼最好不要在windows上面编译,linux上面一会就编译好了。。。。可是windows上面  只想说10个字“尼玛”   出现问题了  可以直接改他的makefile和gmk 爷爷的 例如那个verify.res 啥的 明明没有 他非要加入link 中,导致编译失败   感叹 人生太多的时间花费在这些虽然结果有用,但是过程无用的地方了

爱杀之爪的矩阵 6165

MATLAB之把多个小cell拼成一个数组

问题描述 现有一个cell向量 L (90000,1),每个元素都是由一个(100X9)的double数组组成的.如图. 其中, 每个cell元素都是一个单独的数据, 我们要把它转换成(90000, 19, 100)的三维数组. cell2mat, 但是所有的数据会堆叠起来 L2=cell2mat(L); % (90000, 19) reshape, 变成三维数组 reshape的原理是从上到下, 从左往右拆开重组. 目前只有19这一维数据与要求一致, 那就以这个为突破口. L2=L2'; %

落日之城 9250

已编译好的windows版openjdk7的csdn下载地址

java.net官网的windows版的openjdk7下载地址,在csdn下载。 part1: part2:

水山清风 3019

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

OpenJDK 7的编译

1、java.net不知为何关闭了openJDK7的源码包的下载页面;使用Mercurial的下载速度又极慢。最后只好在百度网盘上找到了OpenJDK7源码,在优快云上找到了OpenJDK8源码。 2、编译环境搭建:sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libxrender-dev xo...

VimGuy的博客 1433

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

windows7 x64 编译openjdk7

最近在windows7 x64位系统下面编译了一下openjdk7。在此做一个记录,避免以后忘了又到处找 ,也给需要编译的朋友一个参考,本文参考了http://weblogs.java.net/blog/simonis/archive/2011/10/28/yaojowbi-yet-another-openjdk-windows-build-instruction此篇博客 首先,从http:/...

lyongsky198的博客 245

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

在Windows平台编译OpenJdk8

学习了一段时间OpenJdk源码后,需要实践来验证自己对jvm各个组件运作机制的理解是否正确,这需要通过调试jvm来实现,而在windows平台编译openjdk是比较繁琐的,这其中遇到了一些坑,记录下build的过程以备不时之需。

vs2008ASPNET的专栏 825
上一篇: 主题:java编码解惑
下一篇: 仅用300行代码实现的智能五子棋人机对战
程序员迈克
博客等级 码龄16年 36粉丝 71原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值