東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

问题汇总第11篇

2015年9月13日星期日



1,virtualbox里centos使用共享功能
在virtualbox安装增强功能,然后分配共享后不会自动挂在,要手动挂载
  1. [senrsl@senrsl-centos7 /]$ mkdir mnt/shared/
  2. [senrsl@senrsl-centos7 /]$ su
  3. 密码:
  4. [root@senrsl-centos7 /]# mount -t vboxsf share /mnt/shared/
  5. [root@senrsl-centos7 /]# ls /mnt/shared/
  6. 05月全公司的考勤.xls
  7. 1426568994135
  8. 1426573726926
2,ubuntu14.04自定义工作区数目
开启之后默认是4个,横2竖2.
加了个显示器后就成了8个桌面,太多了.
设置成1行两列
  1. senrsl@senrsl-ubuntu:~$ gconftool-2 --type=int --set /apps/compiz-1/general/screen0/options/vsize 1
  2. senrsl@senrsl-ubuntu:~$ gconftool-2 --type=int --set /apps/compiz-1/general/screen0/options/hsize 2
好吧,上面这个测试发现没管用....
然后打开tweak

横1纵2,即时生效

3,android查看wifi密码
  1. senrsl@senrsl-ubuntu:~$ adb shell
  2. shell@deb:/ $ cat /data/misc/wifi/*.conf
  3. /system/bin/sh: cat: /data/misc/wifi/*.conf: Permission denied
  4. 1|shell@deb:/ $ su
  5. shell@deb:/ # cat /data/misc/wifi/*.conf

4,java bio,nio,aio

java中的IO主要源自于网络和本地文件

 

     IO的方式通常分为几种,同步阻塞的 BIO、同步非阻塞的NIO、异步非阻塞的AIO

     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服 务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等 待或者遭到拒 绝请求,如果有的话,客户端会线程会等待请求结束后才继续执行。

 

     BIO与NIO一个比较重要的不同,是我们使用BIO的时候往往会引入多线程,每个连接一个单独的线程;而NIO则是使用单线程或者只使用少量的多线程, 每个连接共用一个线程。

    

    

      NIO的最重要的地方是当一个连接创建后,不需要对应一个线程,这个连接会被注册到多路复用器上面,所以所有的连接只需要一个线程就可以搞定,当这个线程 中的多路复用器进行轮询的时候,发现连接上有请求的话,才开启一个线程进行处理,也就是一个请求一个线程模式。

 

      在NIO的处理方式中,当一个请求来的话,开启线程进行处理,可能会等待后端应用的资源(JDBC连接等),其实这个线程就被阻塞了,当并发上来的话,还 是会有BIO一样的问题。

AIO:  

    HTTP/1.1出现后,有了Http长连接,这样除了超时和指明特定关闭的http header外,这个链接是一直打开的状态的,这样在NIO处理中可以进一步的进化,在后端资源中可以实现资源池或者队列,当请求来的话,开启的线程把请 求和请求数据传送给后端资源池或者队列里面就返回,并且在全局的地方保持住这个现场(哪个连接的哪个请求等),这样前面的线程还是可以去接受 其他的请求, 而后端的应用的处理只需要执行队列里面的就可以了,这样请求处理和后端应用是异步的.当后端处理完,到全局地方得到现场,产生响应,这个就实现了异步处 理。

 

     BIO是一个连接一个线程。

   NIO是一个请求一个线程。

   AIO是一个有效请求一个线程。


5,BufferedReader read 前面乱码
以前一直都是取到字符串前面正常后面乱码,结果突然出现了前面乱码后面正常的情况。

有时候是前面有一个字符的乱码,有时候是前面好多个字符的乱码。

一个乱码长这样

很多个乱码就是第一个问号好多个。。。。

看了一下他的十六进制,是这样
efbf bde5 958a 300a e595 8a30 e595 8a31

也就是说,如果是一个的话多了一个 ef bf bd.

然后,大概是这么一篇文章blog.csdn.net/jackpk/article/details/5702964,说是JDK的bug
bugs.java.com/bugdatabase/view_bug.do?bug_id=4508058
╮(╯▽╰)╭,困扰好久。。。。

6,要在ubuntu上编译host模式的adb放到arm设备上用来连接手机
需要一堆arm的依赖
goto7


7,编译arm版的ssl
①先查看环境
发行版本
  1. senrsl@senrsl-ubuntu:~$  cat /etc/*-release
  2. DISTRIB_ID=Ubuntu
  3. DISTRIB_RELEASE=14.04
  4. DISTRIB_CODENAME=trusty
  5. DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS"
  6. NAME="Ubuntu"
  7. VERSION="14.04.1 LTS, Trusty Tahr"
  8. ID=ubuntu
  9. ID_LIKE=debian
  10. PRETTY_NAME="Ubuntu 14.04.1 LTS"
  11. VERSION_ID="14.04"
  12. HOME_URL="http://www.ubuntu.com/"
  13. SUPPORT_URL="http://help.ubuntu.com/"
  14. BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
内核
  1. senrsl@senrsl-ubuntu:~$ cat /proc/version
  2. Linux version 3.13.0-37-generic (buildd@kapok) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #64-Ubuntu SMP Mon Sep 22 21:28:38 UTC 2014
②编译arm版的GCC
1)下载安装
  1. senrsl@senrsl-ubuntu:~/tools/arm$ mkdir -pv gcc-4.8.2/xtools
  2. mkdir: 已创建目录 "gcc-4.8.2"
  3. mkdir: 已创建目录 "gcc-4.8.2/xtools"
  4. senrsl@senrsl-ubuntu:~/tools/arm$ cd gcc-4.8.2/xtools/
  5. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools$ mkdir src
  6. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools$ cd src/
  7. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$  wget http://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.bz2
  8. --2015-09-10 17:28:07--  http://ftp.gnu.org/gnu/binutils/binutils-2.23.2.tar.bz2
  9. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  10. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  11. 已发出 HTTP 请求,正在等待回应... 200 OK
  12. 长度: 21440347 (20M) [application/x-bzip2]
  13. 正在保存至: "binutils-2.23.2.tar.bz2"
  14. 100%[======================================>] 21,440,347   119KB/s   用时 6m 27s
  15. 2015-09-10 17:34:35 (54.1 KB/s) - 已保存 "binutils-2.23.2.tar.bz2" [21440347/21440347])
  16. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
  17. --2015-09-10 17:35:31--  http://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
  18. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  19. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  20. 已发出 HTTP 请求,正在等待回应... 200 OK
  21. 长度: 1897483 (1.8M) [application/x-bzip2]
  22. 正在保存至: "gmp-4.3.2.tar.bz2"
  23. 100%[======================================>] 1,897,483    133KB/s   用时 15s 
  24. 2015-09-10 17:35:47 (125 KB/s) - 已保存 "gmp-4.3.2.tar.bz2" [1897483/1897483])
  25. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://ftp.gnu.org/gnu/mpfr/mpfr-2.4.2.tar.bz2
  26. --2015-09-10 17:35:51--  http://ftp.gnu.org/gnu/mpfr/mpfr-2.4.2.tar.bz2
  27. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  28. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  29. 已发出 HTTP 请求,正在等待回应... 200 OK
  30. 长度: 1077886 (1.0M) [application/x-bzip2]
  31. 正在保存至: "mpfr-2.4.2.tar.bz2"
  32. 100%[======================================>] 1,077,886   70.0KB/s   用时 22s 
  33. 2015-09-10 17:36:14 (47.3 KB/s) - 已保存 "mpfr-2.4.2.tar.bz2" [1077886/1077886])
  34. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
  35. --2015-09-10 17:36:21--  ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
  36.            => "mpc-0.8.1.tar.gz"
  37. 正在解析主机 gcc.gnu.org (gcc.gnu.org)... 209.132.180.131
  38. 正在连接 gcc.gnu.org (gcc.gnu.org)|209.132.180.131|:21... 已连接。
  39. 正在以 anonymous 登录 ... 登录成功!
  40. ==> SYST ... 完成。    ==> PWD ... 完成。
  41. ==> TYPE I ... 完成。  ==> CWD (1) /pub/gcc/infrastructure ... 完成。
  42. ==> SIZE mpc-0.8.1.tar.gz ... 544950
  43. ==> PASV ... 完成。    ==> RETR mpc-0.8.1.tar.gz ... 完成。
  44. 长度:544950 (532K) (非正式数据)
  45. 100%[======================================>] 544,950      344KB/s   用时 1.5s
  46. 2015-09-10 17:36:27 (344 KB/s) - "mpc-0.8.1.tar.gz" 已保存 [544950]
  47. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ tar -pxjf gcc-4.8.2.tar.bz2
  48. bzip2: Compressed file ends unexpectedly;
  49.     perhaps it is corrupted?  *Possible* reason follows.
  50. bzip2: Inappropriate ioctl for device
  51.     Input file = (stdin), output file = (stdout)
  52. It is possible that the compressed file(s) have become corrupted.
  53. You can use the -tvv option to test integrity of such files.
  54. You can use the `bzip2recover' program to attempt to recover
  55. data from undamaged sections of corrupted files.
  56. tar: 归档文件中异常的 EOF
  57. tar: 归档文件中异常的 EOF
  58. tar: Error is not recoverable: exiting now
  59. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ tar -pxjf gcc-4.8.2.tar.bz2
  60. bzip2: Compressed file ends unexpectedly;
  61.     perhaps it is corrupted?  *Possible* reason follows.
  62. bzip2: Inappropriate ioctl for device
  63.     Input file = (stdin), output file = (stdout)
  64. It is possible that the compressed file(s) have become corrupted.
  65. You can use the -tvv option to test integrity of such files.
  66. You can use the `bzip2recover' program to attempt to recover
  67. data from undamaged sections of corrupted files.
  68. tar: 归档文件中异常的 EOF
  69. tar: 归档文件中异常的 EOF
  70. tar: Error is not recoverable: exiting now
  71. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ export SRCDIR=~/tools/arm/gcc-4.8.2/xtools/src
  72. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
  73. --2015-09-10 17:38:28--  http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
  74. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  75. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  76. 已发出 HTTP 请求,正在等待回应... 200 OK
  77. 长度: 85999682 (82M) [application/x-bzip2]
  78. 正在保存至: "gcc-4.8.2.tar.bz2.1"
  79.  4% [>                                      ] 4,216,261    126KB/s  估时 11m 27s^C
  80. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
  81. --2015-09-10 17:39:13--  http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
  82. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  83. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  84. 已发出 HTTP 请求,正在等待回应... 200 OK
  85. 长度: 85999682 (82M) [application/x-bzip2]
  86. 正在保存至: "gcc-4.8.2.tar.bz2"
  87. 100%[======================================>] 85,999,682   365KB/s   用时 5m 25s
  88. 2015-09-10 17:44:39 (259 KB/s) - 已保存 "gcc-4.8.2.tar.bz2" [85999682/85999682])
  89. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$
  90. senrsl@senrsl-ubuntu:~/tools/arm$ cd gcc-4.8.2/xtools/src/
  91. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
  92. --2015-09-10 17:29:55--  http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
  93. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  94. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  95. 已发出 HTTP 请求,正在等待回应... 200 OK
  96. 长度: 23428909 (22M) [application/x-gzip]
  97. 正在保存至: "glibc-2.18.tar.gz"
  98. 100%[======================================>] 23,428,909   131KB/s   用时 3m 23s
  99. 2015-09-10 17:33:19 (113 KB/s) - 已保存 "glibc-2.18.tar.gz" [23428909/23428909])
  100. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
  101. --2015-09-10 17:35:19--  http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
  102. 正在解析主机 ftp.gnu.org (ftp.gnu.org)... 208.118.235.20, 2001:4830:134:3::b
  103. 正在连接 ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80... 已连接。
  104. 已发出 HTTP 请求,正在等待回应... 200 OK
  105. 长度: 85999682 (82M) [application/x-bzip2]
  106. 正在保存至: "gcc-4.8.2.tar.bz2"
  107. 100%[======================================>] 85,999,682   648KB/s   用时 7m 32s
  108. 2015-09-10 17:42:54 (186 KB/s) - 已保存 "gcc-4.8.2.tar.bz2" [85999682/85999682])
  109. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ tar -pxjf binutils-2.23.2.tar.bz2
  110. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ tar -pxzf glibc-2.18.tar.gz
  111. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$  tar -pxjf gcc-4.8.2.tar.bz2
  112. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ cd gcc-4.8.2/
  113. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$ tar -pxjf ../gmp-4.3.2.tar.bz2
  114. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$ tar -pxjf ../mpfr-2.4.2.tar.bz2
  115. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$  tar -pxzf ../mpc-0.8.1.tar.gz
  116. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$ mv gmp-4.3.2/ gmp
  117. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$ mv mpfr-2.4.2/ mpfr
  118. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$ mv mpc-0.8.1/ mpc
  119. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src/gcc-4.8.2$ cd ..
  120. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
  121. --2015-09-10 17:46:32--  http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
  122. 正在解析主机 www.kernel.org (www.kernel.org)... 198.145.20.140, 149.20.4.69, 199.204.44.194, ...
  123. 正在连接 www.kernel.org (www.kernel.org)|198.145.20.140|:80... 已连接。
  124. 已发出 HTTP 请求,正在等待回应... 301 Moved Permanently
  125. 位置:https://www.kernel.org/pub/linux/kernel/v2.6 /linux-2.6.38.tar.bz2 [跟随至新的 URL]
  126. --2015-09-10 17:46:36--  https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
  127. 正在连接 www.kernel.org (www.kernel.org)|198.145.20.140|:443... 已连接。
  128. 已发出 HTTP 请求,正在等待回应... 200 OK
  129. 长度: 74739098 (71M) [application/x-bzip2]
  130. 正在保存至: "linux-2.6.38.tar.bz2"
  131. 45% [================>                      ] 34,155,381   938B/s   用时 29m 33s
  132. 2015-09-10 18:16:10 (18.8 KB/s) - 在 34155381 字节处连接关闭。 重试中。
  133. --2015-09-10 18:16:11--  (尝试次数: 2)  https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.tar.bz2
  134. 正在连接 www.kernel.org (www.kernel.org)|198.145.20.140|:443... 已连接。
  135. 已发出 HTTP 请求,正在等待回应... 206 Partial Content
  136. 长度: 74739098 (71M),剩余 40583717 (39M) [application/x-bzip2]
  137. 正在保存至: "linux-2.6.38.tar.bz2"
  138. 100%[+++++++++++++++++=====================>] 74,739,098   725KB/s   用时 82s  s
  139. 2015-09-10 18:17:34 (486 KB/s) - 已保存 "linux-2.6.38.tar.bz2" [74739098/74739098])
  140. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$ tar -pxjf linux-2.6.38.tar.bz2
  141. senrsl@senrsl-ubuntu:~/tools/arm/gcc-4.8.2/xtools/src$
2)配置编译
  1. export SRCDIR=/home/senrsl/tools/arm/gcc-4.8.2/xtools/src
  2. export BINUTILS_SRC=$SRCDIR/binutils-2.25
  3. export KERNEL_SRC=$SRCDIR/linux-2.6.38
  4. export GCC_SRC=$SRCDIR/gcc-4.8.2
  5. export GLIBC_SRC=$SRCDIR/glibc-2.18
  6. export BUILDDIR=/home/senrsl/tools/arm/gcc-4.8.2/xtools/build
  7. export TARGETMACH=arm-none-linux-gnueabi
  8. export BUILDMACH=i686-pc-linux-gnu
  9. export INSTALLDIR=/home/senrsl/tools/arm/gcc-4.8.2/arm
  10. export SYSROOTDIR=$INSTALLDIR/sysroot
  11. mkdir $BUILDDIR
  12. mkdir $BUILDDIR/binutils
  13. cd $BUILDDIR/binutils
  14. $BINUTILS_SRC/configure --disable-werror --build=$BUILDMACH --target=$TARGETMACH --prefix=$INSTALLDIR --with-sysroot=$SYSROOTDIR
  15. make
  16. make install
  17. cd $KERNEL_SRC
  18. make mrproper
  19. make ARCH=arm omap2plus_defconfig
  20. mkdir -pv $INSTALLDIR/sysroot/usr
  21. make ARCH=arm headers_check
  22. make ARCH=arm INSTALL_HDR_PATH=$INSTALLDIR/sysroot/usr headers_install
  23. cd $SRCDIR
  24. mkdir $BUILDDIR/bootstrap-gcc
  25. cd $BUILDDIR/bootstrap-gcc
  26. $GCC_SRC/configure --build=$BUILDMACH --host=$BUILDMACH --target=$TARGETMACH --prefix=$INSTALLDIR --without-headers --enable-boostrap --enable-languages="c" --disable-threads --enable-__cxa_atexit --disable-libmudflap --with-gnu-ld --with-gnu-as --disable-libssp --disable-libgomp --disable-nls --disable-shared
  27. make all-gcc install-gcc
  28. make all-target-libgcc install-target-libgcc
  29. ln -s $INSTALLDIR/lib/gcc/arm-none-linux-gnueabi/4.8.2/libgcc.a $INSTALLDIR/lib/gcc/arm-none-linux-gnueabi/4.8.2/libgcc_sh.a
  30. #glibc,must installed gawk
  31. mkdir -pv $BUILDDIR/libc
  32. cd $BUILDDIR/libc
  33. echo "libc_cv_forced_unwind=yes" > config.cache
  34. echo "libc_cv_c_cleanup=yes" >> config.cache
  35. export PATH=$INSTALLDIR/bin:$PATH
  36. export CROSS=arm-none-linux-gnueabi
  37. export CC=${CROSS}-gcc
  38. export LD=${CROSS}-ld
  39. export AS=${CROSS}-as
  40. $GLIBC_SRC/configure --build=$BUILDMACH --host=$TARGETMACH --prefix=$SYSROOTDIR/usr --with-headers=$SYSROOTDIR/usr/include --config-cache --enable-kernel=2.6.0
  41. make -k install-headers cross_compiling=yes install_root=$SYSROOTDIR
  42.  
  43. #*** We need to move some files ***
  44. pushd $SYSROOTDIR/$INSTALLDIR/sysroot/usr/include
  45. cp -rv * $SYSROOTDIR/usr/include/
  46. popd
  47.  
  48. ln -s $INSTALLDIR/lib/gcc/arm-none-linux-gnueabi/4.8.2/libgcc.a $INSTALLDIR/lib/gcc/arm-none-linux-gnueabi/4.8.2/libgcc_eh.a
  49. cd $SRCDIR
  50. #building glibc
  51. rm -rf $BUILDDIR/libc
  52. mkdir -pv $BUILDDIR/libc
  53. cd $BUILDDIR/libc
  54. echo "libc_cv_forced_unwind=yes" > config.cache
  55. echo "libc_cv_c_cleanup=yes" >> config.cache
  56.  
  57. #*** check to make sure these are still set, they should be ***
  58. echo $PATH
  59. echo $CROSS
  60. echo $CC
  61.  
  62. $GLIBC_SRC/configure --build=$BUILDMACH --host=$TARGETMACH --prefix=/usr --with-headers=$SYSROOTDIR/usr/include --config-cache --enable-kernel=2.6.0
  63. make -k install-headers cross_compiling=yes install_root=$SYSROOTDIR
  64. ln -s $INSTALLDIR/lib/gcc/arm-none-linux-gnueabi/4.8.2/libgcc.a $INSTALLDIR/lib/gcc/arm-none-linux-gnueabi/4.8.2/libgcc_s.a
  65. make
  66. make install_root=$SYSROOTDIR install
  67. #building next gcc
  68. #*** unset CC, LD, and AS. We do not want to xcompile the xcompiler :-) ***
  69. unset CC
  70. unset LD
  71. unset AS
  72.  
  73. #*** delete gcc-x.x.x and re-install it ***
  74. cd $SRCDIR
  75. rm -rf gcc-4.8.2
  76. tar -pxjf gcc-4.8.2.tar.bz2
  77. cd gcc-4.8.2/
  78. tar -pxjf ../gmp-4.3.2.tar.bz2
  79. tar -pxjf ../mpfr-2.4.2.tar.bz2
  80. tar -pxzf ../mpc-0.8.1.tar.gz
  81. mv gmp-4.3.2/ gmp
  82. mv mpfr-2.4.2/ mpfr
  83. mv mpc-0.8.1/ mpc
  84. mkdir -pv $BUILDDIR/final-gcc
  85. cd $BUILDDIR/final-gcc
  86. echo "libc_cv_forced_unwind=yes" > config.cache
  87. echo "libc_cv_c_cleanup=yes" >> config.cache
  88. BUILD_CC=gcc
  89. $GCC_SRC/configure --build=$BUILDMACH --target=$TARGETMACH --prefix=$INSTALLDIR --with-sysroot=$SYSROOTDIR --enable-languages="c" --with-gnu-as --with-gnu-ld --disable-multilib --with-float=soft --disable-sjlj-exceptions --disable-nls --enable-threads=posix --enable-long-longx
  90. make all-gcc
  91. make install-gcc
  92. #buiding final gcc
  93. #*** make sure these are still unset ***
  94. echo $CC
  95. echo $LD
  96. echo $AS
  97.  
  98. #*** delete gcc-x.x.x and re-install it ***
  99. cd $SRCDIR
  100. rm -rf gcc-4.8.2
  101. tar -pxjf gcc-4.8.2.tar.bz2
  102. cd gcc-4.8.2/
  103. tar -pxjf ../gmp-4.3.2.tar.bz2
  104. tar -pxjf ../mpfr-2.4.2.tar.bz2
  105. tar -pxzf ../mpc-0.8.1.tar.gz
  106. mv gmp-4.3.2/ gmp
  107. mv mpfr-2.4.2/ mpfr
  108. mv mpc-0.8.1/ mpc
  109. mkdir -pv $BUILDDIR/final-gcc-2
  110. cd $BUILDDIR/final-gcc-2
  111. echo "libc_cv_forced_unwind=yes" > config.cache
  112. echo "libc_cv_c_cleanup=yes" >> config.cache
  113. $GCC_SRC/configure --build=$BUILDMACH --target=$TARGETMACH --prefix=$INSTALLDIR --with-sysroot=$SYSROOTDIR --enable-languages="c" --with-gnu-as --with-gnu-ld --disable-multilib --with-float=soft --disable-sjlj-exceptions --disable-nls --enable-threads=posix --disable-libmudflap --disable-libssp --enable-long-longx --with-shared
  114. make
  115. make install
  116. #new terminal run 2 test
  117. export INSTALLDIR=/home/senrsl/tools/arm/gcc-4.8.2/arm
  118. export PATH=$INSTALLDIR/bin:$PATH
  119. export TARGETMACH=arm-none-linux-gnueabi
  120. export BUILDMACH=i686-pc-linux-gnu
  121. export CROSS=arm-none-linux-gnueabi
  122. export CC=${CROSS}-gcc
  123. export LD=${CROSS}-ld
  124. export AS=${CROSS}-as
  125. #compile test program
  126. $CC -Wall -Wextra /home/senrsl/android/workspace/tech/FiveHalo/halo_print.c -o halo_print
  127. #check
  128. senrsl@senrsl-ubuntu:~$ ./halo_print
  129. bash: ./halo_print: cannot execute binary file: 可执行文件格式错误
  130. senrsl@senrsl-ubuntu:~$ file halo_print
  131. halo_print: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
  132. #check suss,在一个新的终端上交叉编译应该先这么配置
  133. export INSTALLDIR=/home/senrsl/tools/arm/gcc-4.8.2/arm
  134. export PATH=$INSTALLDIR/bin:$PATH
  135. export TARGETMACH=arm-none-linux-gnueabi
  136. export BUILDMACH=i686-pc-linux-gnu
  137. export CROSS=arm-none-linux-gnueabi
  138. export CC=${CROSS}-gcc
  139. export LD=${CROSS}-ld
  140. export AS=${CROSS}-as

③编译arm版的openssl
  1. #2)build openssl
  2. #create dir
  3. export OPENSSL_SRC=/home/senrsl/tools/arm/openssl/src
  4. mkdir -pv /home/senrsl/tools/arm/openssl
  5. mkdir $OPENSSL_SRC
  6. cd $OPENSSL_SRC
  7. #get source
  8. wget ftp://ftp.openssl.org/source/openssl-1.0.1p.tar.gz
  9. tar -pxzf openssl-1.0.1p.tar.gz
  10. wget http://www.linuxfromscratch.org/patches/downloads/openssl/openssl-1.0.1e-fix_parallel_build-1.patch
  11. wget http://www.linuxfromscratch.org/patches/downloads/openssl/openssl-1.0.1e-fix_pod_syntax-1.patch
  12. #set env
  13. export INSTALLDIR=/home/senrsl/tools/arm/gcc-4.8.2/arm
  14. export PATH=$INSTALLDIR/bin:$PATH
  15. export TARGETMACH=arm-none-linux-gnueabi
  16. export BUILDMACH=i686-pc-linux-gnu
  17. export CROSS=arm-none-linux-gnueabi
  18. export CC=${CROSS}-gcc
  19. export LD=${CROSS}-ld
  20. export AS=${CROSS}-as
  21. export AR=${CROSS}-ar
  22. #build openssl
  23. cd openssl-1.0.1p/
  24. patch -Np1 -i ../openssl-1.0.1e-fix_parallel_build-1.patch
  25. patch -Np1 -i ../openssl-1.0.1e-fix_pod_syntax-1.patch
  26. ./Configure -DOPENSSL_NO_HEARTBEATS --openssldir=/home/senrsl/tools/arm/openssl/final shared os/compiler:arm-none-linux-gnueabi-
  27. make
  28. make install
  29. cd ../../final/lib/
  30. $AR -x libcrypto.a
  31. $CC -shared *.o -o libcrypto.so
  32. rm *.o
  33. $AR -x libssl.a
  34. $CC -shared *.o -o libssl.so
  35. rm *.o
  36. #*err:POD document had syntax errors at /usr/bin/pod2man line 71.注释此掉 #$parser->parse_from_file (@files);
  37. #check
  38. senrsl@senrsl-ubuntu:~/tools/arm/openssl/final/lib$ cd ../
  39. senrsl@senrsl-ubuntu:~/tools/arm/openssl/final$ ls
  40. bin  certs  include  lib  man  misc  openssl.cnf  private
  41. senrsl@senrsl-ubuntu:~/tools/arm/openssl/final$ cd bin/
  42. senrsl@senrsl-ubuntu:~/tools/arm/openssl/final/bin$ file openssl
  43. openssl: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped

8,台式机迁移笔记本








--
senRsl
2015年08月11日10:34:06

没有评论 :

发表评论