原文出处:

CompileGraphics Magick, Boost, Botan and QT with MinGW64 under Windows 7 64

http://www.kineticsystem.org/?q=node/19

译文出处:

http://blog.csdn.net/cheungmine/article/details/8918808

1 安装MSYS

从下面的地址下载并运行:mingw-get-setup.exe

http://sourceforge.net/projects/mingw/files/latest/download?source=files

选择安装msys base和mingw developer toolkit.

安装目录在本文中为C:\DEVPACK\MinGW.

安装完毕之后运行下面的命令行:

C:\DEVPACK\MinGW\msys\1.0\msys.bat

逐条输入下面的语句,执行安装软件包:

1
2
3
4
5
mingw-get
install

msys-rxvt 
mingw-get
install

msys-wget 
mingw-get
install

msys-zip
mingw-get
install

msys-unzip 
mingw-get
install

msys-xz 

右键点击文件C:\DEVPACK\MinGW\msys\1.0\msys.bat,在桌面上创建快捷方式, 并在"msys.bat - 快捷方式" 上点击右键, 目标后面添加--rxvt

2 安装rubenvb MinGW-w64

1)从下面的链接进入下载页面:

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/gcc-4.8-release/

下载(为64位Windows编译原生64位):

x86_64-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z

2)从下面的链接进入下载页面:

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/gcc-4.8-release/

下载(为32位Windows编译,也可以运行在Win64上):

i686-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z

包的命名规范是:

[i686-w64-mingw32]-[gcc-4.8.0]-[win64]_rubenvb

[目标平台]-[gcc-4.8.0]-[工具链OS]_rubenvb

目标平台指MinGW最终编译好的二进制代码运行的平台,[i686...]表示Win32平台,[x86_64-...]表示Win64平台。工具链OS表示你安装MinGW的计算机OS。

例如,如果想在WinXP32位平台上编译运行于Win7 64位平台的程序或库(dll),需要选择:x86_64-w64-mingw32-gcc-4.8.0-win32_rubenvb.7z。

因为我的机器是64位Win7,因此我选择了上面2个包。解压后得到:

1
2
C:\DEVPACK\MinGW\mingw32\ 
C:\DEVPACK\MinGW\mingw64\ 

另外添加3个目录如下,用于存放特定的工具链:

1
2
3
C:\DEVPACK\MinGW\opt 
C:\DEVPACK\MinGW\local32 
C:\DEVPACK\MinGW\local64 

修改文件C:\DEVPACK\MinGW\msys\1.0\etc\fstab如下:

1
2
3
4
5
6
7
#
Win32_Path              Mount_Point 
C:\DEVPACK\MinGW\           
/mingw 
C:\DEVPACK\MinGW\mingw32\   
/mingw32 
C:\DEVPACK\MinGW\mingw64\   
/mingw64 
C:\DEVPACK\MinGW\opt\       
/opt 
C:\DEVPACK\MinGW\local32\   
/local32 
C:\DEVPACK\MinGW\local64    
/local64 

重新打开MSYS命令行工具(以后不特别说明,凡是以$开头的都是指msys-bat命令行MSYS,无$开头指windows命令行cmd),输入下面的命令以创建目录:

1
2
3
mkdir
/opt/bin
mkdir/local{32,64}/{bin,etc,include,lib,share,dst,src} 
mkdir/local{32,64}/lib/pkgconfig 

3 安装CMake

在下面的地址下载cmake-2.8.10.2-win32-x86.zip,解压到/opt下面。

http://www.cmake.org/cmake/resources/software.html

解压后的目录结构如下:

1
2
3
4
/opt/bin 
/opt/doc 
/opt/man 
/opt/share 

4 配置32位和64位编译环境

打开MSYS命令行工具,运行下面的命令创建目录:

1
mkdir
-p/mingw/local/{bin,docs,include,lib,share,src} 

1)为了能分开编译32和64位的程序,为32位编译创建配置文件:/local32/etc/profile.local

$ cat >/local32/etc/profile.local << "EOF"

#==================Begin of /local32/etc/profile.local ====================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
alias
dir='ls -la --color=auto' 
alias
ls='ls --color=auto' 
   
export
PKG_CONFIG_PATH="/local32/lib/pkgconfig" 
export
CPPFLAGS="-I/local32/include" 
export
CFLAGS="-I/local32/include -mms-bitfields -mthreads -mtune=pentium3" 
export
CXXFLAGS="-I/local32/include -mms-bitfields -mthreads -mtune=pentium3" 
export
LDFLAGS="-L/local32/lib -lpthread -mthreads" 
export
PATH=".:/local32/bin:/mingw32/bin:/mingw/bin:/bin:/opt/bin:$PATH" 
export
PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ ' 
   
export
SRC_DIR=/local32/src 
export
DST_DIR=/local32/dst 
export
MINGW_HOME=/mingw32 
export
PKG_CONFIG=$DST_DIR/pkgconfig/bin/pkg-config.exe 
   
#
Configure PATH and FLAGS. 
   
APPLICATION_ARRAY=( 
"LIBICONV_PREFIX:$DST_DIR/libiconv" 
"ZLIB_PREFIX:$DST_DIR/zlib" 
"BZIP2_PREFIX:$DST_DIR/bzip2" 
"LIBTOOL_PREFIX:$DST_DIR/libtool" 
"LIBXML2_PREFIX:$DST_DIR/libxml2" 
"LIBPNG_PREFIX:$DST_DIR/libpng" 
"LIBJPEG_PREFIX:$DST_DIR/libjpeg" 
"LIBTIFF_PREFIX:$DST_DIR/libtiff" 
"FREETYPE2_PREFIX:$DST_DIR/freetype2" 
"LCMS2_PREFIX:$DST_DIR/lcms2" 
"FFTW_PREFIX:$DST_DIR/fftw" 
"BOTAN_PREFIX:$DST_DIR/botan" 
"QT_PREFIX:$DST_DIR/qt" 
"OPENCV_PREFIX:$DST_DIR/opencv" 
"LIBUSBX_PREFIX:$DST_DIR/libusbx" 
"LIBFFI_PREFIX:$DST_DIR/libffi" 
"PKGCONFIG_PREFIX:$DST_DIR/pkg-config" 
"GETTEXT_PREFIX:$DST_DIR/gettext" 
"GLIB_PREFIX:$DST_DIR/glib" 
"GMQ8_PREFIX:$DST_DIR/gm-q8" 
"GMQ16_PREFIX:$DST_DIR/gm-q16" 
"IMQ8_PREFIX:$DST_DIR/im-q8" 
"IMQ16_PREFIX:$DST_DIR/im-q16" 
"BOOST_PREFIX:$DST_DIR/boost" 
"LIBUSBX_PREFIX:$DST_DIR/libusbx" 
"GLIB_PREFIX:$DST_DIR/glib" 
"YAFARAY_PREFIX:$DST_DIR/yafaray" 
"SQLITE3_PREFIX:$DST_DIR/sqlite3" 
"LIBTIFF_PREFIX:$DST_DIR/libtiff" 

   
for
app in "${APPLICATION_ARRAY[@]}" ; do 
   
    KEY=${app%%:*} 
    VALUE=${app##*:} 
    export
"$KEY"="$VALUE" 
       
    export
PATH="$VALUE/bin:$PATH" 
    export
LDFLAGS="-L$VALUE/lib $LDFLAGS" 
    export
CFLAGS="-I$VALUE/include $CFLAGS" 
    export
CPPFLAGS="-I$VALUE/include $CPPFLAGS" 
    export
CXXFLAGS="-I$VALUE/include $CXXFLAGS" 
    export
PKG_CONFIG_PATH="$VALUE/lib/pkgconfig:$PKG_CONFIG_PATH" 
   
done 
   
export
LIBFFI_CFLAGS="-I $DST_DIR/libffi/lib/libffi-3.0.11/include" 
export
LIBFFI_LIBS="-L$DST_DIR/libffi/lib" 

#==================End of /local32/etc/profile.local =====================

EOF

2)为64位编译创建配置文件:/local64/etc/profile.local

$ cat >/local64/etc/profile.local << "EOF"

#==================Begin of /local64/etc/profile.local ====================

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
alias
dir='ls -la --color=auto' 
alias
ls='ls --color=auto' 
   
export
PKG_CONFIG_PATH="/local64/lib/pkgconfig" 
export
CPPFLAGS="-I/local64/include" 
export
CFLAGS="-I/local64/include -mms-bitfields -mthreads" 
export
CXXFLAGS="-I/local64/include -mms-bitfields -mthreads" 
export
LDFLAGS="-L/local64/lib -lpthread" 
export
PATH=".:/local64/bin:/mingw64/bin:/mingw/bin:/bin:/opt/bin:$PATH" 
export
PS1='\[\033[32m\]\u@\h \[\033[33m\w\033[0m\]$ ' 
   
export
SRC_DIR=/local64/src 
export
DST_DIR=/local64/dst 
export
MINGW_HOME=/mingw64 
export
PKG_CONFIG=$DST_DIR/pkgconfig/bin/pkg-config.exe 
   
#
Configure PATH and FLAGS. 
   
APPLICATION_ARRAY=( 
"LIBICONV_PREFIX:$DST_DIR/libiconv" 
"ZLIB_PREFIX:$DST_DIR/zlib" 
"BZIP2_PREFIX:$DST_DIR/bzip2" 
"LIBTOOL_PREFIX:$DST_DIR/libtool" 
"LIBXML2_PREFIX:$DST_DIR/libxml2" 
"LIBPNG_PREFIX:$DST_DIR/libpng" 
"LIBJPEG_PREFIX:$DST_DIR/libjpeg" 
"LIBTIFF_PREFIX:$DST_DIR/libtiff" 
"FREETYPE2_PREFIX:$DST_DIR/freetype2" 
"LCMS2_PREFIX:$DST_DIR/lcms2" 
"FFTW_PREFIX:$DST_DIR/fftw" 
"BOTAN_PREFIX:$DST_DIR/botan" 
"QT_PREFIX:$DST_DIR/qt" 
"OPENCV_PREFIX:$DST_DIR/opencv" 
"LIBUSBX_PREFIX:$DST_DIR/libusbx" 
"LIBFFI_PREFIX:$DST_DIR/libffi" 
"PKGCONFIG_PREFIX:$DST_DIR/pkg-config" 
"GETTEXT_PREFIX:$DST_DIR/gettext" 
"GLIB_PREFIX:$DST_DIR/glib" 
"GMQ8_PREFIX:$DST_DIR/gm-q8" 
"GMQ16_PREFIX:$DST_DIR/gm-q16" 
"IMQ8_PREFIX:$DST_DIR/im-q8" 
"IMQ16_PREFIX:$DST_DIR/im-q16" 
"BOOST_PREFIX:$DST_DIR/boost" 
"LIBUSBX_PREFIX:$DST_DIR/libusbx" 
"GLIB_PREFIX:$DST_DIR/glib" 
"YAFARAY_PREFIX:$DST_DIR/yafaray" 
"SQLITE3_PREFIX:$DST_DIR/sqlite3" 
"LIBTIFF_PREFIX:$DST_DIR/libtiff" 

   
for
app in "${APPLICATION_ARRAY[@]}" ; do 
   
    KEY=${app%%:*} 
    VALUE=${app##*:} 
    export
"$KEY"="$VALUE" 
       
    export
PATH="$VALUE/bin:$PATH" 
    export
LDFLAGS="-L$VALUE/lib $LDFLAGS" 
    export
CFLAGS="-I$VALUE/include $CFLAGS" 
    export
CPPFLAGS="-I$VALUE/include $CPPFLAGS" 
    export
CXXFLAGS="-I$VALUE/include $CXXFLAGS" 
    export
PKG_CONFIG_PATH="$VALUE/lib/pkgconfig:$PKG_CONFIG_PATH" 
   
done 
   
export
LIBFFI_CFLAGS="-I $DST_DIR/libffi/lib/libffi-3.0.11/include" 
export
LIBFFI_LIBS="-L$DST_DIR/libffi/lib" 

#==================End of /local64/etc/profile.local ======================

EOF

3)默认采用64位编译环境,因此更改脚本:

$ cat >> /etc/profile << "EOF"

1
2
3
if
[ -f/local64/etc/profile.local ]; then 
        source
/local64/etc/profile.local 
fi 

EOF

4)在MYSYS命令行中使用下面的语句可以在32/64位编译环境之间切换:

1
2
source
/local64/etc/profile.local 
source
/local32/etc/profile.local 

5 编译安装x64库

5.1 Pkg-config Lite

pkg-config程序就是向用户向程序提供相应库的路径、版本号等信息的程序。譬如说我们运行以下命令pkg-config 查看gcc的CFLAGS参数:

$pkg-config --libs --cflags opencv

会显示如下信息:

-I/usr/include/opencv -lcxcore -lcv -lhighgui-lcvaux

这就是用gcc编译连接时CFLAGS的参数。因此当我们需要编译连接某个库时,我们只需把上面那行加入gcc 的参数里面即可。这也是configure的作用,它会检查你需要的包,产生相应的信息。

下载:pkg-config-lite-0.27.1-1.tar.gz

地址:http://sourceforge.net/projects/pkgconfiglite/files/0.27.1-1/

解压到$SRC_DIR:/local64/src

1
2
3
4
5
6
$
cd $SRC_DIR 
$
tar -zxf pkg-config-lite-0.27.1-1.tar.gz 
$
cd pkg-config-lite-0.27.1-1 
$
sh configure --prefix=$PKGCONFIG_PREFIX 
$
make -j4             # 指定使用4CPU构建,仅仅加速编译过程,不影响最后结果 
$
make install 

按照上面的过程,很顺利我们编译好了64位版本的程序pkg-config。下面继续。

5.2 编译zlib

http://zlib.net

下载:zlib-1.2.8.tar.gz 到$SRC_DIR

1
2
3
4
5
6
7
8
$
source /local64/etc/profile.local 
$
tar -zxf zlib-1.2.8.tar.gz 
$
make -f win32/Makefile.gcc 
$
export "INCLUDE_PATH=$ZLIB_PREFIX/include" 
$
export "LIBRARY_PATH=$ZLIB_PREFIX/lib" 
$
export "BINARY_PATH=$ZLIB_PREFIX/bin" 
$
mkdir -p $ZLIB_PREFIX/bin && cp zlib1.dll $ZLIB_PREFIX/bin/ 
$
make -f win32/Makefile.gcc install 

5.3 编译libiconv

这是个字符编码转换库和工具。比如GBK->UTF-8。

下载libiconv-1.14.tar.gz到$SRC_DIR:

地址:

http://ftp.gnu.org/pub/gnu/libiconv/

运行下面的命令,解压源码包,编译和安装:

1
2
3
4
5
$
tar -zxf libiconv-1.14.tar.gz 
$
cd $SRC_DIR/libiconv-1.14/ 
$
sh configure –-prefix=$LIBICONV_PREFIX 
$
make -j4 
$
make install 

同样的办法可以编译win32版本的libiconv:

1
2
3
4
5
6
$
source /local32/etc/profile.local 
$
tar -zxf libiconv-1.14.tar.gz 
$
cd $SRC_DIR/libiconv-1.14/ 
$
sh configure –-prefix=$LIBICONV_PREFIX 
$
make -j4 
$
make install 

5.4 编译LibTIFF

下载:tiff-4.0.3.tar.gz

地址:ftp://ftp.remotesensing.org/pub/libtiff/

解压到:$SRC_DIR (32位是/local32/src, 64位是/local64/src)

1
2
3
4
5
$
tar -zxf tiff-4.0.3.tar.gz 
$
cd $SRC_DIR/tiff-4.0.3/ 
$
sh configure –-prefix=$LIBTIFF_PREFIX 
$
make -j4 
$
make install 

5.5 编译Sqlite3

下载:sqlite-autoconf-3071602.tar.gz

地址:http://sqlite.org/2013/sqlite-autoconf-3071602.tar.gz

运行:

1
2
3
4
$
tar -zxf sqlite-autoconf-3071602.tar.gz 
$
sh configure --prefix=$SQLITE3_PREFIX 
$
make -j4 
$
make install 

总结一下,编译和安装 YourLib 步骤是:

3-1)下载库源码包 YourLib.tar.gz 到 $SRC_DIR

3-2)在/local??/etc/profile.local文件中添加我们要编译的库配置,例如:

1
2
3
...... 
"SQLITE3_PREFIX:$DST_DIR/sqlite3" 
"YourLib_PREFIX:$DST_DIR/yourlib" 

3-3)运行解压和编译命令:

1
2
3
4
$
tar -zxf YourLib.tar.gz 
$
sh configure --prefix=$YourLib_PREFIX 
$
make -j4 
$
make install 

然后就可以把YourLib.dll拷贝到Win32/64系统中使用了。仿照此方法,可以编译其他库。

6 使用Libiconv的64位版本

使用MSVS2010创建win32控制台空项目,添加下面的文件main.c。然后更改项目平台为:x64。

项目属性里面,链接器->高级里面选择:MachineX64 (/MACHINE:X64)。常规->字符集->未设置。经过这样的配置,就可以编译32 / 64位windows程序了。main.c的全部代码如下,可以很好地编译出32位和64位版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
main.c
 *  
using Libiconv 64bits
 *
cheungmine
 *
2013-5-13
 */ 
#include
<stdio.h> 
#include
<stdlib.h> 
#include
<string.h> 
#include
<memory.h> 
   
#include
<windows.h> 
   
/*
x64 */ 
#include
"C:/DEVPACK/MinGW/local64/dst/libiconv/include/iconv.h" 
   
/*
x86-32 */ 
#include
"C:/DEVPACK/MinGW/local32/dst/libiconv/include/iconv.h" 
   
typedef
iconv_t (*def_libiconv_open) (const char* tocode, const char* fromcode); 
typedef
size_t (*def_libiconv) (iconv_t cd,  char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft); 
typedef
int (*def_libiconv_close) (iconv_t cd); 
   
int
main (int argc, char **argv) 

  size_t
ret; 
  iconv_t
cd, cd2; 
  char
*inbuf, *in, *outbuf, *out; 
  size_t
inlen, outlen; 
   
  HMODULE
hDll; 
  def_libiconv_open
__iconv_open; 
  def_libiconv_close
__iconv_close; 
  def_libiconv
__iconv; 
   
  in
= (char*) malloc(100); 
  strcpy(in,
"Hello, 中国!"); 
  inbuf
= in; 
  inlen
= strlen(in) + 1; 
   
  out
= (char*) malloc(100); 
  *out
= 0; 
  outbuf
= out; 
  outlen
= 100; 
   
  if
(sizeof(void*) == 8) { 
    printf("build
for x64 Windows.\n"); 
    hDll
= LoadLibrary("C:/DEVPACK/MinGW/local64/dst/libiconv/bin/libiconv-2.dll"); 
  }
else { 
    printf("build
for 32-bits Windows.\n"); 
    hDll
= LoadLibrary("C:/DEVPACK/MinGW/local32/dst/libiconv/bin/libiconv-2.dll"); 
  
   
  if
(!hDll) { 
    printf("DLL
not found.\n"); 
    exit(0); 
  
   
  __iconv_open
= (def_libiconv_open) GetProcAddress(hDll, "libiconv_open"); 
  if
(!__iconv_open) { 
    printf("libiconv_open
not found.\n"); 
    exit(0); 
  
   
  __iconv
= (def_libiconv) GetProcAddress(hDll, "libiconv"); 
  if
(!__iconv_open) { 
    printf("libiconv
not found.\n"); 
    exit(0); 
  
   
  __iconv_close
= (def_libiconv_close) GetProcAddress(hDll, "libiconv_close"); 
  if
(!__iconv_open) { 
    printf("libiconv_close
not found.\n"); 
    exit(0); 
  
   
  cd
= __iconv_open("UTF-8", "GBK"); 
  cd2
= __iconv_open("GBK", "UTF-8"); 
   
  ret
= __iconv(cd, (char**)&in, &inlen, (char**)&out, &outlen); 
  printf("GBK(%s)
=> UTF-8(%s)\n", inbuf, outbuf); 
   
  /*
now in is utf-8 string */ 
  in
= outbuf; 
  inlen
= strlen(in)+1; 
   
  /*
now out is empty */ 
  *inbuf
= 0; 
  out
= inbuf; 
  outlen
= 100; 
   
  ret
= __iconv(cd2, (char**)&in, &inlen, (char**)&out, &outlen); 
  printf("UTF-8(%s)
=> GBK(%s)\n", outbuf, inbuf); 
   
  __iconv_close(cd); 
  __iconv_close(cd2); 
     
  free(inbuf); 
  free(outbuf); 
     
  FreeLibrary(hDll); 
  return
0; 
}

7 总结

MinGW作为组织开发、持续集成大型Windows项目,充分利用开源软件,的一款极为优秀的交叉编译环境,提供了我们在不同的平台上编译 Windows程序的能力。举例子来说:

1)x86_64-w64-mingw32-gcc-4.8.0-cygwin_rubenvb.tar.xz

这个包在Cygwin环境下使用MinGW编译出原生的64位Windows二进制APP(静态库,动态库和可执行程序)。

2)x86_64-w64-mingw32-gcc-4.8.0-linux64_rubenvb.tar.xz

这个包在Linux amd64环境下使用MinGW编译出原生的64位Windows二进制APP。

3)i686-w64-mingw32-gcc-4.8.0-win64_rubenvb.7z

这个包在Window x64环境下使用MinGW编译出原生的32位Windows二进制APP。

Windows7 64下MinGW64/MSYS环境搭建的更多相关文章

  1. Linux(64) 下 Tomcat + java 环境搭建

    查看 linux 系统位数 getconf LONG_BIT java  JDK下载地址: http://download.oracle.com/otn-pub/java/jdk/8u181-b13/ ...

  2. Windows7 64下搭建Caffe+python接口环境

    参考链接: http://www.cnblogs.com/yixuan-xu/p/5858595.html http://www.cnblogs.com/zf-blog/p/6139044.html ...

  3. win7下android开发环境搭建(win7 64位)

    win7下android开发环境搭建(win7 64位)   一.安装 JDK 下载JDK最新版本,下载地址如下: http://www.oracle.com/technetwork/java/jav ...

  4. CentOS下Web服务器环境搭建LNMP一键安装包

    CentOS下Web服务器环境搭建LNMP一键安装包 时间:2014-09-04 00:50来源:osyunwei.com 作者:osyunwei.com 举报 点击:3797次 最新版本:lnmp- ...

  5. Android下NDK开发环境搭建

    Android下NDK开发环境搭建 1.     AndroidNDK安装与配置 1.1  NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...

  6. Android下OpenCV的环境搭建

    目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基 ...

  7. ubuntu下mysql的环境搭建及使用

    ubuntu下mysql的环境搭建及使用 环境安装 使用如下命令分别安装服务端程序,客户端程序,及客户端依赖库 sudo apt-get install mysql-server sudo apt-g ...

  8. 【转】Windows环境下Android NDK环境搭建

    原文网址:http://www.metsky.com/archives/525.html 前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员 ...

  9. Windows环境下Android NDK环境搭建

    前面介绍Windows下Android 开发环境配置,主要是面向JAVA开发环境,对只做APK上层应用开发人员来讲,基本够用了,由于Linux系统的权限限制和Android封装架构限制,很多涉及底层设 ...

随机推荐

  1. html19-----视频,音乐的插入

    视频格式 MP4 格式是一种新的即将普及的因特网视频格式.HTML5 .Flash 播放器以及优酷等视频网站均支持它. 格式 文件 描述 AVI .avi AVI (Audio Video Inter ...

  2. 用python下载辞典

    用python下载词源词典Etymoline Online Etymology Dictionary是最好的 English 词源词典,现在来说没有之一.但是,一直在PC上查单词有时不是很方便,遂就想 ...

  3. centos 6.5 x64编译有python的vim7.4

    wget ftp://ftp.vim.org/pub/vim/extra/vim-7.2-extra.tar.gzwget ftp://ftp.vim.org/pub/vim/extra/vim-7. ...

  4. 解决laravel中环境配置不起作用的方法

    博客已经迁移到www.imyzf.com,本站不再更新,请谅解! laravel有个环境配置选项很好用,在bootstrap/start.php中,曾经百度到这里面加入域名,就可以自动选择环境 $en ...

  5. 微调Win8.1这台电脑

    从前有个笑话:一位朋友在办公室受到领导教育:“我说小王同志啊,虽然这电脑是你打了报告组织上买给你用的,可是你也不好这么狂妄嘛...”可怜的他只好把图标的名字改为“大家的电脑”. 想必大家已经知道这个笑 ...

  6. VC++2010添加菜单

    1  资源视图下面右键添加资源 选择menu 2  创建你想要的menu 3  找到CDialog::OnInitDialog();在后面添加代码. CMenu menu; menu.LoadMenu ...

  7. 用Delphi获取当前系统时间

    在开发应用程序时往往需要获取当前系统时间.尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题. 在<融会贯通--Delphi4.0实战技巧>(以下简称“该书” ...

  8. 深入理解Oracle的imp/exp 和各版本之间的规则

    Oracle数据中IMP/EXP工具可用于对数据进行迁移.IMP命令用于把Dmp文件从本地导入到远程数据库服务器,而EXP命令则是把数据从远程数据库服务器导出到本地的Dmp文件.其功能相当于Oracl ...

  9. WPF 控件

    ****ScrollViewer**** 前台: <ScrollViewer  HorizontalScrollBarVisibility="Auto" VerticalSc ...

  10. Pjax介绍及在asp.net MVC3中使用pjax的简单示例

    相信很多人对ajax并不陌生,对ajax的一些优点也了如指掌,如:局部刷新改善用户体验,减少开销,让服务器和浏览器之间的响应更快等. 但是它的缺点也是很显而易见的: AJAX大量的使用了javascr ...