Linux 下编译openjdk
操作系统ubuntu14.04
openjdk版本 7u4
openjdk7u4可以在https://jdk7.java.net/source.html下载
一.构建编译环境
sudo apt-get install build-essential gawk m4 openjdk-6-jdk
libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev
x11proto-print-dev binutils libmotif3 libmotif-dev ant
二.设置环境变量
export LANG=C #编译openjdk7所需要的jdk目录,注意jdk的版本
#试过jdk1.8和1.7的其他版本,在运行时就出现bug
export ALT_BOOTDIR=/home/foreverenjoy/Program/jdk1.7.0_04 export ALLOW_DOWNLOADS=true
export USE_PRECOMPILED_HEADER=true
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug unset CLASSPATH
unset JAVA_HOME
三.检查设置是否正确
在终端输入make sanity
1 ( cd ./jdk/make && \
2 make sanity HOTSPOT_IMPORT_CHECK=false JDK_TOPDIR=/home/foreverenjoy/Program/openjdk/jdk JDK_MAKE_SHARED_DIR=/home/foreverenjoy/Program/openjdk/jdk/make/common/shared EXTERNALSANITYCONTROL=true SOURCE_LANGUAGE_VERSION=7 TARGET_CLASS_VERSION=7 MILESTONE=internal BUILD_NUMBER=b00 JDK_BUILD_NUMBER=b00 FULL_VERSION=1.7.0-internal-debug-foreverenjoy_2016_07_03_19_04-b00 PREVIOUS_JDK_VERSION=1.6.0 JDK_VERSION=1.7.0 JDK_MKTG_VERSION=7 JDK_MAJOR_VERSION=1 JDK_MINOR_VERSION=7 JDK_MICRO_VERSION=0 PREVIOUS_MAJOR_VERSION=1 PREVIOUS_MINOR_VERSION=6 PREVIOUS_MICRO_VERSION=0 ARCH_DATA_MODEL=64 VARIANT=DBG DEBUG_CLASSFILES=true COOKED_BUILD_NUMBER=0 ALT_OUTPUTDIR=/home/foreverenjoy/Program/openjdk/build/linux-amd64 ALT_LANGTOOLS_DIST=/home/foreverenjoy/Program/openjdk/build/linux-amd64/langtools/dist ALT_CORBA_DIST=/home/foreverenjoy/Program/openjdk/build/linux-amd64/corba/dist ALT_JAXP_DIST=/home/foreverenjoy/Program/openjdk/build/linux-amd64/jaxp/dist ALT_JAXWS_DIST=/home/foreverenjoy/Program/openjdk/build/linux-amd64/jaxws/dist ALT_HOTSPOT_IMPORT_PATH=/home/foreverenjoy/Program/openjdk/build/linux-amd64/hotspot/import BUILD_HOTSPOT=true ; )
3 INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
4 INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
5 INFO: STRIP_POLICY=min_strip
6 INFO: ZIP_DEBUGINFO_FILES=1
7 make[1]: Entering directory `/home/foreverenjoy/Program/openjdk/jdk/make'
8 INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
9 INFO: /usr/bin/objcopy cmd found so will create .debuginfo files.
10 INFO: STRIP_POLICY=min_strip
11 INFO: ZIP_DEBUGINFO_FILES=1
12 make[1]: Leaving directory `/home/foreverenjoy/Program/openjdk/jdk/make'
13
14 Build Machine Information:
15 build machine = foreverenjoy
16
17 Build Directory Structure:
18 CWD = /home/foreverenjoy/Program/openjdk
19 TOPDIR = .
20 LANGTOOLS_TOPDIR = ./langtools
21 JAXP_TOPDIR = ./jaxp
22 JAXWS_TOPDIR = ./jaxws
23 CORBA_TOPDIR = ./corba
24 HOTSPOT_TOPDIR = ./hotspot
25 JDK_TOPDIR = ./jdk
26
27 Build Directives:
28 BUILD_LANGTOOLS = true
29 BUILD_JAXP = true
30 BUILD_JAXWS = true
31 BUILD_CORBA = true
32 BUILD_HOTSPOT = true
33 BUILD_JDK = true
34 DEBUG_CLASSFILES =
35 DEBUG_BINARIES =
36
37 Hotspot Settings:
38 HOTSPOT_BUILD_JOBS =
39 HOTSPOT_OUTPUTDIR = /home/foreverenjoy/Program/openjdk/build/linux-amd64/hotspot/outputdir
40 HOTSPOT_EXPORT_PATH = /home/foreverenjoy/Program/openjdk/build/linux-amd64/hotspot/import
41
42
43
44
45 Bootstrap Settings:
46 BOOTDIR = /usr/lib/jvm/java-6-openjdk-amd64
47 ALT_BOOTDIR = /usr/lib/jvm/java-6-openjdk-amd64
48 BOOT_VER = 1.6.0 [requires at least 1.6]
49 OUTPUTDIR = /home/foreverenjoy/Program/openjdk/build/linux-amd64
50 ALT_OUTPUTDIR = /home/foreverenjoy/Program/openjdk/build/linux-amd64
51 ABS_OUTPUTDIR = /home/foreverenjoy/Program/openjdk/build/linux-amd64
52
53 Build Tool Settings:
54 SLASH_JAVA = /NOT-SET
55 ALT_SLASH_JAVA =
56 VARIANT = DBG
57 JDK_DEVTOOLS_DIR = /NOT-SET/devtools
58 ALT_JDK_DEVTOOLS_DIR =
59 ANT_HOME =
60 UNIXCOMMAND_PATH = /bin/
61 ALT_UNIXCOMMAND_PATH =
62 COMPILER_PATH = /usr/bin/
63 ALT_COMPILER_PATH =
64 DEVTOOLS_PATH = /usr/bin/
65 ALT_DEVTOOLS_PATH =
66 UNIXCCS_PATH = /usr/ccs/bin/
67 ALT_UNIXCCS_PATH =
68 USRBIN_PATH = /usr/bin/
69 ALT_USRBIN_PATH =
70 COMPILER_NAME = GCC4
71 COMPILER_VERSION = GCC4
72 CC_VER = 4.8 [requires at least 4.3.0]
73 ZIP_VER = 3.0 [requires at least 2.2]
74 UNZIP_VER = 6.00 [requires at least 5.12]
75 ANT_VER = 1.9.3 [requires at least 1.7.1]
76 TEMPDIR = /home/foreverenjoy/Program/openjdk/build/linux-amd64/tmp
77
78 Build Directives:
79 OPENJDK = true
80 USE_HOTSPOT_INTERPRETER_MODE =
81 PEDANTIC =
82 DEV_ONLY =
83 NO_DOCS =
84 NO_IMAGES =
85 TOOLS_ONLY =
86 INSANE =
87 COMPILE_APPROACH = parallel
88 PARALLEL_COMPILE_JOBS = 2
89 ALT_PARALLEL_COMPILE_JOBS =
90 FASTDEBUG =
91 COMPILER_WARNINGS_FATAL = false
92 COMPILER_WARNING_LEVEL =
93 SHOW_ALL_WARNINGS =
94 INCREMENTAL_BUILD = false
95 CC_HIGHEST_OPT =
96 CC_HIGHER_OPT =
97 CC_LOWER_OPT =
98 CXXFLAGS = -g -fPIC -DCC_NOEX -W -Wall -Wno-unused -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN
99 CFLAGS = -g -fno-strict-aliasing -fPIC -W -Wall -Wno-unused -Wno-parentheses -pipe -fno-omit-frame-pointer -D_LITTLE_ENDIAN
100 BOOT_JAVA_CMD = /usr/lib/jvm/java-6-openjdk-amd64/bin/java -XX:-PrintVMOptions -XX:+UnlockDiagnosticVMOptions -XX:-LogVMOutput -Xmx512m -Xms512m -XX:PermSize=32m -XX:MaxPermSize=160m
101 BOOT_JAVAC_CMD = /usr/lib/jvm/java-6-openjdk-amd64/bin/javac -J-XX:ThreadStackSize=1536 -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput -J-Xmx512m -J-Xms512m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -encoding ascii -source 6 -target 6 -XDignore.symbol.file=true
102 BOOT_JAR_CMD = /usr/lib/jvm/java-6-openjdk-amd64/bin/jar
103 BOOT_JARSIGNER_CMD = /usr/lib/jvm/java-6-openjdk-amd64/bin/jarsigner
104 JAVAC_CMD = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries/linux-amd64/bin/javac -J-XX:ThreadStackSize=1536 -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput -J-Xmx512m -J-Xms512m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -g -source 7 -target 7 -encoding ascii -Xbootclasspath:/home/foreverenjoy/Program/openjdk/build/linux-amd64/classes
105 JAVAH_CMD = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries/linux-amd64/bin/javah -bootclasspath /home/foreverenjoy/Program/openjdk/build/linux-amd64/classes
106 JAVADOC_CMD = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries/linux-amd64/bin/javadoc -J-XX:-PrintVMOptions -J-XX:+UnlockDiagnosticVMOptions -J-XX:-LogVMOutput -J-Xmx512m -J-Xms512m -J-XX:PermSize=32m -J-XX:MaxPermSize=160m -bootclasspath /home/foreverenjoy/Program/openjdk/build/linux-amd64/classes
107
108 Build Platform Settings:
109 USER = foreverenjoy
110 PLATFORM = linux
111 ARCH = amd64
112 LIBARCH = amd64
113 ARCH_FAMILY = amd64
114 ARCH_DATA_MODEL = 64
115 ARCHPROP = amd64
116 ALSA_VERSION = 1.0.27.2
117 OS_VERSION = 3.19.0-59-generic [requires at least 2.6]
118 OS_VARIANT_NAME = Ubuntu
119 OS_VARIANT_VERSION = 14.04
120 MB_OF_MEMORY = 7555
121
122 GNU Make Settings:
123 MAKE = make
124 MAKE_VER = 3.81 [requires at least 3.81]
125 MAKECMDGOALS = sanity
126 MAKEFLAGS = w
127 SHELL = /bin/sh
128
129 Target Build Versions:
130 JDK_VERSION = 1.7.0
131 MILESTONE = internal
132 RELEASE = 1.7.0-internal-debug
133 FULL_VERSION = 1.7.0-internal-debug-foreverenjoy_2016_07_03_19_04-b00
134 BUILD_NUMBER = b00
135
136 External File/Binary Locations:
137 USRJDKINSTANCES_PATH = /opt/java
138 BUILD_JDK_IMPORT_PATH = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries
139 ALT_BUILD_JDK_IMPORT_PATH =
140 JDK_IMPORT_PATH = /NOT-SET/re/jdk/1.7.0/promoted/latest/binaries/linux-amd64
141 ALT_JDK_IMPORT_PATH =
142 LANGTOOLS_DIST =
143 ALT_LANGTOOLS_DIST = /home/foreverenjoy/Program/openjdk/build/linux-amd64/langtools/dist
144 CORBA_DIST =
145 ALT_CORBA_DIST = /home/foreverenjoy/Program/openjdk/build/linux-amd64/corba/dist
146 JAXP_DIST =
147 ALT_JAXP_DIST = /home/foreverenjoy/Program/openjdk/build/linux-amd64/jaxp/dist
148 JAXWS_DIST =
149 ALT_JAXWS_DIST = /home/foreverenjoy/Program/openjdk/build/linux-amd64/jaxws/dist
150 HOTSPOT_DOCS_IMPORT_PATH = /NO_DOCS_DIR
151 ALT_HOTSPOT_DOCS_IMPORT_PATH =
152 HOTSPOT_IMPORT_PATH = /home/foreverenjoy/Program/openjdk/build/linux-amd64/hotspot/import
153 ALT_HOTSPOT_IMPORT_PATH = /home/foreverenjoy/Program/openjdk/build/linux-amd64/hotspot/import
154 HOTSPOT_SERVER_PATH = /home/foreverenjoy/Program/openjdk/build/linux-amd64/hotspot/import/jre/lib/amd64/server
155 ALT_HOTSPOT_SERVER_PATH =
156 CACERTS_FILE = ./../src/share/lib/security/cacerts
157 ALT_CACERTS_FILE =
158 CUPS_HEADERS_PATH = /usr/include
159 ALT_CUPS_HEADERS_PATH =
160
161 OpenJDK-specific settings:
162 FREETYPE_HEADERS_PATH = /usr/include
163 ALT_FREETYPE_HEADERS_PATH =
164 FREETYPE_LIB_PATH = /usr/lib
165 ALT_FREETYPE_LIB_PATH =
166
167 Previous JDK Settings:
168 PREVIOUS_RELEASE_PATH = USING-PREVIOUS_RELEASE_IMAGE
169 ALT_PREVIOUS_RELEASE_PATH =
170 PREVIOUS_JDK_VERSION = 1.6.0
171 ALT_PREVIOUS_JDK_VERSION =
172 PREVIOUS_JDK_FILE =
173 ALT_PREVIOUS_JDK_FILE =
174 PREVIOUS_JRE_FILE =
175 ALT_PREVIOUS_JRE_FILE =
176 PREVIOUS_RELEASE_IMAGE = /usr/lib/jvm/java-6-openjdk-amd64
177 ALT_PREVIOUS_RELEASE_IMAGE =
178
179
180 Sanity check passed.
如果看到"Sanity check passend.",说明检查通过。
四.开始编译
在终端输入make
等一段时间
#-- Build times ----------
Target debug_build
Start 2016-07-03 19:25:12
End 2016-07-03 19:41:06
00:01:19 corba
00:05:24 hotspot
00:00:15 jaxp
00:00:18 jaxws
00:08:11 jdk
00:00:27 langtools
00:15:54 TOTAL
-------------------------
编译完成
在OpenJDK目录下有个build文件夹是编译的output文件夹
foreverenjoy@foreverenjoy:~/Program/openjdk$ cd build/
foreverenjoy@foreverenjoy:~/Program/openjdk/build$ ls -l
total 8
drwxrwxr-x 29 foreverenjoy foreverenjoy 4096 7月 3 19:41 linux-amd64
drwxrwxr-x 28 foreverenjoy foreverenjoy 4096 7月 3 19:25 linux-amd64-debug
foreverenjoy@foreverenjoy:~/Program/openjdk/build$ cd linux-amd64/bin/
foreverenjoy@foreverenjoy:~/Program/openjdk/build/linux-amd64/bin$ ./java -version
openjdk version "1.7.0-internal-debug"
OpenJDK Runtime Environment (build 1.7.0-internal-debug-foreverenjoy_2016_07_03_19_19-b00)
OpenJDK 64-Bit Server VM (build 24.0-b56-jvmg, mixed mode)
编译结果
五.遇到的问题
1.
make[6]: Leaving directory /usr/local/openjdk/build/linux-amd64-debug/hotspot/outputdir/linux_amd64_compiler2/jvmg'
cd linux_amd64_compiler2/jvmg && ./test_gamma
Using java runtime at: /usr/lib/jvm/java-1.6.0-openjdk.x86_64/jre
./gamma: relocation error: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.33.x86_64/jre/lib/amd64/libjava.so: symbol JVM_FindClassFromCaller, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference
make[5]: *** [jvmg] Error 127
make[5]: Leaving directory/usr/local/openjdk/build/linux-amd64-debug/hotspot/outputdir' make[4]: * [generic_build2] Error 2 make[4]: Leaving directory /usr/local/openjdk/hotspot/make'
make[3]: *** [jvmg] Error 2
make[3]: Leaving directory/usr/local/openjdk/hotspot/make' make[2]: * [hotspot-build] Error 2 make[2]: Leaving directory /usr/local/openjdk'
make[1]: *** [generic_debug_build] Error 2
make[1]: Leaving directory/usr/local/openjdk'
symbol JVM_FindClassFromCaller, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference
删除hotspot/make/linux/Makefile中所有的test_gamma ( 即删掉所有的&& ./test_gamma)
2.
m -XX:MaxPermSize=160m -jar /home/foreverenjoy/Program/openjdk/build/linux-amd64/../linux-amd64-debug/btjars/generatecurrencydata.jar -o /home/foreverenjoy/Program/openjdk/build/linux-amd64/../linux-amd64-debug/lib/currency.data.temp \
< ../../../src/share/classes/java/util/CurrencyData.properties
Error: time is more than 10 years from present: 1136059200000
java.lang.RuntimeException: time is more than 10 years from present: 1136059200000
at build.tools.generatecurrencydata.GenerateCurrencyData.makeSpecialCaseEntry(GenerateCurrencyData.java:285)
at build.tools.generatecurrencydata.GenerateCurrencyData.buildMainAndSpecialCaseTables(GenerateCurrencyData.java:225)
at build.tools.generatecurrencydata.GenerateCurrencyData.main(GenerateCurrencyData.java:154)
make[5]: *** [/home/foreverenjoy/Program/openjdk/build/linux-amd64/../linux-amd64-debug/lib/currency.data] Error 1
make[5]: Leaving directory `/home/foreverenjoy/Program/openjdk/jdk/make/java/java'
make[4]: *** [all] Error 1
make[4]: Leaving directory `/home/foreverenjoy/Program/openjdk/jdk/make/java'
make[3]: *** [all] Error 1
make[3]: Leaving directory `/home/foreverenjoy/Program/openjdk/jdk/make'
make[2]: *** [jdk-build] Error 2
make[2]: Leaving directory `/home/foreverenjoy/Program/openjdk'
make[1]: *** [generic_debug_build] Error 2
make[1]: Leaving directory `/home/foreverenjoy/Program/openjdk'
make: *** [build_debug_image] Error 2
time is more than 10 years from present: 1136059200000
将CurrencyData.properties内的时间改为10年内
六.在NetBeans编译运行HotSpot
NetBeans下载地址:http://netbeans.org/ 下载时选择支持C/C++开发的版本。
首先新建项目,选择 基于现有源代码的C/C++选项
在 源码文件夹中填入OpenJDK目录下hotspot目录的路径,在下面的单选按钮中选择“定制”,点击下一步
预构建模块中的设置如下:
进入下一步,在Build Comman中输入
#当前目录为hotspot,make后加参数-C make/ -f Makefile,make会在读取Makefile之前改变到目录hotspot/make/
${MAKE} -C make/ -f Makefile clean jvmg ALT_BOOTDIR=/home/foreverenjoy/Program/jdk1.7.0_04 ARCH_DATA_MODEL=64 LANG=C
然后一直点击下一步,结束后右击项目,点击Build。
Build成功之后,右击项目,选择项目属性。
修改Run Cammand,Run Directory和添加Environment(环境变量)
Run Cammand:
#运行ClaA类
/home/foreverenjoy/Program/openjdk/hotspot/build/linux/linux_amd64_compiler2/jvmg/gamma ClaA Run Directory:
/home/foreverenjoy/Program/openjdk/hotspot/build/linux/linux_amd64_compiler2/jvmg ClASSPATH:
#/home/foreverenjoy/Program/javaProject是ClaA的目录
.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/jre/lib/i18n.jar:/home/foreverenjoy/Program/javaProject JAVA_HOME:
/home/foreverenjoy/Program/jdk1.7.0_04 LD_LIBRARY_PATH:
.:${JAVA_HOME}/jre/lib/amd64/native_threads:${JAVA_HOME}/jre/lib/amd64:
最后点击Run就可以了
最后附上hotspot的源码结构
├─agent Serviceability Agent的客户端实现
├─make 用来build出HotSpot的各种配置文件
├─src HotSpot VM的源代码
│ ├─cpu CPU相关代码(汇编器、模板解释器、ad文件、部分runtime函数在这里实现)
│ ├─os 操作系相关代码
│ ├─os_cpu 操作系统+CPU的组合相关的代码
│ └─share 平台无关的共通代码
│ ├─tools 工具
│ │ ├─hsdis 反汇编插件
│ │ ├─IdealGraphVisualizer 将server编译器的中间代码可视化的工具
│ │ ├─launcher 启动程序“Java”
│ │ ├─LogCompilation 将-XX:+LogCompilation输出的日志(hotspot.log)整理成更容易阅读的格式的工具
│ │ └─ProjectCreator 生成Visual Studio的project文件的工具
│ └─vm HotSpot VM的核心代码
│ ├─adlc 平台描述文件(上面的cpu或os_cpu里的*.ad文件)的编译器
│ ├─asm 汇编器接口
│ ├─c1 client编译器(又称“C1”)
│ ├─ci 动态编译器的公共服务/从动态编译器到VM的接口
│ ├─classfile 类文件的处理(包括类加载和系统符号表等)
│ ├─code 动态生成的代码的管理
│ ├─compiler 从VM调用动态编译器的接口
│ ├─gc_implementation GC的实现
│ │ ├─concurrentMarkSweep Concurrent Mark Sweep GC的实现
│ │ ├─g1 Garbage-First GC的实现(不使用老的分代式GC框架)
│ │ ├─parallelScavenge ParallelScavenge GC的实现(server VM默认,不使用老的分代式GC框架)
│ │ ├─parNew ParNew GC的实现
│ │ └─shared GC的共通实现
│ ├─gc_interface GC的接口
│ ├─interpreter 解释器,包括“模板解释器”(官方版在用)和“C++解释器”(官方版不在用)
│ ├─libadt 一些抽象数据结构
│ ├─memory 内存管理相关(老的分代式GC框架也在这里)
│ ├─oops HotSpot VM的对象系统的实现
│ ├─opto server编译器(又称“C2”或“Opto”)
│ ├─prims HotSpot VM的对外接口,包括部分标准库的native部分和JVMTI实现
│ ├─runtime 运行时支持库(包括线程管理、编译器调度、锁、反射等)
│ ├─services 主要是用来支持JMX之类的管理功能的接口
│ ├─shark 基于LLVM的JIT编译器(官方版里没有使用)
│ └─utilities 一些基本的工具类
└─test 单元测试
HotSpot源码结构
博客园(FOREVER_ENJOY):http://www.cnblogs.com/zyx1314/p/5638596.html
本文版权归作者所有;欢迎转载!请注明文章作者和原文连接
Linux 下编译openjdk的更多相关文章
- linux下编译gcc6.2.0
linux下编译gcc6.2.0 在archlinx的下gcc已经更新到6.2.1了,win10的WSL下还是gcc4.8.官方源没有比较新的版本,于是自己编译使用. GCC6的几个新特性 GCC 6 ...
- LINUX下编译安装PHP各种报错大集合
本文为大家整理汇总了一些linux下编译安装php各种报错大集合 ,感兴趣的同学参考下. nginx1.6.2-mysql5.5.32二进制,php安装报错解决: 123456 [root@clien ...
- linux下编译安装vim7.4并安装clang_complete插件
linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...
- linux下编译出现空间不足解决办法
linux下编译出现空间不足解决办法 编译内核出现问题: AS .tmp_kallsyms1.o .tmp_kallsyms1.S:2: fatal error: when writing ...
- linux下编译安装curl
linux下编译安装curl 1.下载curl git clone https://github.com/curl/curl.git 2.在curl目录下生成configure文件 ./buldcon ...
- 如何在Kali Linux下编译Windows Exploit
前言 微软的Windows在企业或是个人应用领域占据着最大的市场份额,在渗透测试过程中你会经常遇到很多Windows的工作站和服务器.另一方面,大多数渗透测试人员主要使用基于Linux的发行版渗透测试 ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译安装boost库
linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...
随机推荐
- Model验证功能
占位符 {0}对应属性 {1}对应minimum {2}对应maximum [StringLength(15, MinimumLength = 6, ErrorMessage = " ...
- Sql Server 备份还原失败错误ERROR:3145(备份集中的数据库备份与现有的数据库不同)及解决办法
SQL Server备份文件bak,备份后还原出现错误3145,备份集中的数据库备份与现有的 'xxx' 数据库不同. 解决办法如下: 1,新建一个与现有数据库重名的数据库. 如果您不知道数据库名称, ...
- MVC 自定义Htmlhelper扩展
在MVC中,我们不仅可以使用它原来的方法,我们还可以自定义,这不不仅加大了我们开发的效率,同时使界面更简洁. 具体什么是扩展方法,你可以这样理解,必须是静态且在形参中第一个参数是以this开头,大概先 ...
- 从零开始学 Java - Spring MVC 统一异常处理
看到 Exception 这个单词都心慌 如果有一天你发现好久没有看到Exception这个单词了,那你会不会想念她?我是不会的.她如女孩一样的令人心动又心慌,又或者你已经练功到了孤独求败,等了半辈子 ...
- GJM :动作手游实时PVP 帧同步(客户端)[转载]
原帖地址:http://gad.qq.com/article/detail/7171195 原文作者:唐声福 原帖备注:版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 1.概述 1.1.基于U ...
- 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题
最近给客户做了基于SQLServer的发布订阅的“读写分离”功能,但是某些表数据很大,经常发生某几条数据丢失的问题,导致订阅无法继续进行.但是每次发现问题重新做一次发布订阅又非常消耗时间,所以还得根据 ...
- js => ES6一个新的函数写法
今天在网上参观到一个写法,返回字符串个个字母的个数 var arr='aaabbccaa'; var info = arr.split('').reduce((p, k) => (p[k]++ ...
- ArcGIS 的 Oracle 数据库的要求
[ArcGIS必打补丁]ArcGIS 10.2.2 for Desktop连接Oracle(2014年10月发布)数据库崩溃的问题 http://blog.csdn.net/linghe301/art ...
- 玩转大麦盒子airplay
长城宽待送了大麦盒子,一直没怎么用,既然是安卓的系统,那估计可以安装很多的软件吧,今天演练了一下. 大麦盒子 规格和介绍 http://baike.so.com/doc/7487612.html 有G ...
- Android Touch事件传递机制 二:单纯的(伪生命周期)
转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...