1.linux 怎么升级默认装好的php和mysql到5.0

2.在android4.0.几的版本上会出现这个问题,在线求解答

win7操作系统用什么版本的bisonflex_win7用哪个版本好

linux from scratch 操作:

第一部分:环境设置

1、安装VirtualBox3.1.8

2、安装Linux操作系统(RHEL或Centos等,不能用ubuntu,因为要有patch,m4,-1.4.10,autoconf,yacc等程序)

3、安装增强功能并分配固定数据空间,设置/mnt/share共享:

mount -t vboxsf share /mnt/share

如果要开机就挂上共享,可以在/etc/fstab的最后加上

share /mnt/share vboxsf rw,gid=100,uid=1000,auto 0 0

4、解压lfslivecd-x86-6.3-42145.iso里的lfs-sources到share

#另外,也可以不用安装操作系统,直接用lfslivecd-x86-6.3-42145.iso作启动盘;

#启动后选/Asia/shanghai及Chinese(simpifiled utf8),然后可以用cfdisk /dev/hda进行分区

#启动盘的/usr/share/LFS-BOOK-6.3-HTML目录下就是LFS手册

#由于要复制粘贴,所以要开启ssh服务,virtualbox设置的网络里将NAT(网格地址转换)改为Bridged Adapter,界面名称选1x1

11b/g/n Wireless LAN PCI Express Half Mini Card Adapter(这是我的无线卡).

#启动后用ifconfig就能查看地址,然后再用passwd给root设个密码(不然客户端不能登录)

#然后启动服务/etc/rc.d/init.d/sshd start

#最后再Windows里用putty连接ssh服务器(在Session界面的HostName里输入IP,Connection

Type里选SSH即可)。

#如果要用putty传输文件,则打开cmd窗口,输入命令:pscp 源文件路径 root@hostIp:目的路径

如将aaa.jpg传到/home下,则:pscp aaa.jpg root@192.168.0.101:/home

5、将/mnt/share/lfs-sources设置到根目录的lfs-sources:

ln -s /mnt/share/lfs-sources /

6、添加一个8G的虚拟硬盘(硬盘大小最好不小于2G)

7、分区并格式化硬盘:

8、生成sources及tools目录

9.将tools挂至根目录:

ln -sv $LFS/tools /

10.生成lfs用户

11.生成lfs用户环境

12.重新进入环境

第二部分:工具链制作

13.编译binutils

14.编译gcc

15.安装内核头文件Linux API Headers

16.编译Glibc-2.5.1

17.调整工具链

18.测试工具链的调整

19.测试工具安装

20.GCC安装(第二遍)

21.安装Binutils(第二遍)

22.安装Ncurses

23.安装Bash

24.安装Bzip

25.安装Coreutils

26.安装Diffutils

27.安装Findutils

28.安装Gawk

29.Gettext

30.Grep

31.Gzip

32.Make

33.Patch

34.安装Perl

35.安装Sed

36.安装Tar

37.安装Texinfo

38.安装Util-linux

39.删除些不用的东西(可不执行)

第三部分 主机中设置lfs

40.回到主机并建三个目录

41.建设备文件

43.复制源码到目标系统下

44.chroot到目标系统下(将新盘作为根目录)

45.建立目标系统目录结构

46.创建几个必要的链接

47.创建root及nobody用户组

48.重加载bash

第四部分 软件包安装

50.重启的环境恢复

51.进入软件包目录

52.安装Linux头

53.安装Man-pages

54.安装Glibc

55.调整工具链

56.调整specs文件

57.测试是否调整成功

58.安装Binutils

59.安装GCC

60.测试GCC是否安装正确

61.安装Berkeley

62.安装Sed

63.安装E2fsprogs

64.安装Coreutils

65.安装Iana-Etc

66.安装M4-1.4.10

67.安装Bison

68.安装Ncurses

69.安装Procps

70.安装Liool

71.安装Perl

72.安装Readline

73.安装Zlib

74.安装Autoconf

75.安装Automake

76.安装Bash

77.安装Bzip

78.安装Diffutils

79.安装File

80.安装Findutils

81.Flex

82.安装Grub

83.安装Gawk

84.安装Gettext

85.安装Grep

86.安装Groff

87.安装Gzip

88.安装Inetutils

89.安装IPRoute

90.安装kbd

91.安装Less

92.安装Make

93.安装Man-DB

94.安装Mktemp

95.安装Module-Init-Tools

96.安装Patch

.安装Psmisc

98.安装Shadow

99.安装Sysklogd

100.安装Sysvinit

101.安装Tar

102.安装Texinfo

103.安装Udev

104.安装Util-linux

105.安装Vim

106.退出chroot环境

第五部分 安装系统

107.从现在到制作结束,重启后设置

108.生成相关文件

109.安装内核

110.安装Grub

111.设置Grub启动菜单(注意,如果是两个分区则应修改root选项为hd0,1及/dev/hda2)

112.将menu.lst连接到/etc目录

113.结束

logout

至此,已经全部安装完成,可以启动自己的系统了。

-----------------------------------------------------------------------

另:

114.安装Linux2.6.37版本(linux-2.6.37.tar.bz2)

Perl和iprout要用更高版本,用:

perl-5.14.1.tar.bz2

iproute2-3.3.0.tar.bz2

115.解压initrd文件

116.制作内存启动盘

linux 怎么升级默认装好的php和mysql到5.0

每个 DBA 是不是都有过删库的经历?删库了没有备份怎么办?备份恢复后无法启动服务什么情况?表定义损坏数据无法读取怎么办??

我曾遇到某初创互联网企业,因维护人员不规范的备份恢复操作,导致系统表空间文件被初始化,上万张表无法读取,花了数小时才抢救回来。

当你发现数据无法读取时,也许并非数据丢失了,可能是 DBMS 找不到描述数据的信息。

背景

先来了解下几张关键的 InnoDB 数据字典表,它们保存了部分表定义信息,在我们恢复表结构时需要用到。

SYS_TABLES 描述 InnoDB 表信息CREATE TABLE `SYS_TABLES` (`NAME` varchar(255) NOT NULL DEFAULT '', ?表名`ID` bigint(20) unsigned NOT NULL DEFAULT '0', ?表id`N_COLS` int(10) DEFAULT NULL,`TYPE` int(10) unsigned DEFAULT NULL,`MIX_ID` bigint(20) unsigned DEFAULT NULL,`MIX_LEN` int(10) unsigned DEFAULT NULL,`CLUSTER_NAME` varchar(255) DEFAULT NULL,`SPACE` int(10) unsigned DEFAULT NULL, ? 表空间idPRIMARY KEY (`NAME`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_INDEXES 描述 InnoDB 索引信息CREATE TABLE `SYS_INDEXES` ( ?`TABLE_ID` bigint(20) unsigned NOT NULL DEFAULT '0', 与sys_tables的id对应 ?`ID` bigint(20) unsigned NOT NULL DEFAULT '0', ?索引id ?`NAME` varchar(120) DEFAULT NULL, 索引名称 ?`N_FIELDS` int(10) unsigned DEFAULT NULL, 索引包含字段的个数 ?`TYPE` int(10) unsigned DEFAULT NULL, ?`SPACE` int(10) unsigned DEFAULT NULL, ?存储索引的表空间id ?`PE_NO` int(10) unsigned DEFAULT NULL, ?索引的root page id ?PRIMARY KEY (`TABLE_ID`,`ID`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_COLUMNS 描述 InnoDB 表的字段信息CREATE TABLE `SYS_COLUMNS` ( ?`TABLE_ID` bigint(20) unsigned NOT NULL, 与sys_tables的id对应 ?`POS` int(10) unsigned NOT NULL, 字段相对位置 ?`NAME` varchar(255) DEFAULT NULL, 字段名称 ?`MTYPE` int(10) unsigned DEFAULT NULL, ?字段编码 ?`PRTYPE` int(10) unsigned DEFAULT NULL, 字段校验类型 ?`LEN` int(10) unsigned DEFAULT NULL, ?字段字节长度 ?`PREC` int(10) unsigned DEFAULT NULL, 字段精度 ?PRIMARY KEY (`TABLE_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;SYS_FIELDS 描述全部索引的字段列CREATE TABLE `SYS_FIELDS` ( ?`INDEX_ID` bigint(20) unsigned NOT NULL, ?`POS` int(10) unsigned NOT NULL, ?`COL_NAME` varchar(255) DEFAULT NULL, ?PRIMARY KEY (`INDEX_ID`,`POS`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;./storage/innobase/include/dict0boot.h 文件定义了每个字典表的 index id,对应 id 的 page 中存储着字典表的数据。

这里我们需要借助 undrop-for-innodb 工具恢复数据,它能读取表空间信息得到 page,将数据从 page 中提取出来。

# wget s://github/chhabhaiya/undrop-for-innodb/archive/master.zip# yum install -y gcc flex bison# make# make sys_parser

# ./sys_parser 读取表结构信息

sys_parser [-h] [-u] [-p] [-d] databases/table

stream_parser 读取 InnoDB page 从 ibdata1 或 ibd 或分区表

# ./stream_parserYou must specify file with -f optionUsage: ./stream_parser -f <innodb_datafile> [-T N:M] [-s size] [-t size] [-V|-g] ?Where: -h - Print this help -V or -g ? - Print debug information -s size - Amount of memory used for disk cache (allowed examples 1G 10M). Default 100M -T - retrieves only pages with index id = NM (N - high word, M - low word of id) -t size - Size of InnoDB tablespace to scan. Use it only if the parser can't determine it by himself.

c_parser 从 innodb page 中读取记录保存到文件

# ./c_parserError: Usage: ./c_parser -4|-5|-6 [-dDV] -f <InnoDB page or dir> -t table.sql [-T N:M] [-b <external pages directory>] ?Where -f <InnoDB page(s)> -- InnoDB page or directory with pages(all pages should he same index_id) -t <table.sql> -- CREATE statement of a table -o <file> -- Se dump in this file. Otherwise print to stdout -l <file> -- Se SQL statements in this file. Otherwise print to stderr -h ?-- Print this help -d ?-- Process only those pages which potentially could he deleted records (default = NO) -D ?-- Recover deleted rows only (default = NO) -U ?-- Recover UNdeleted rows only (default = YES) -V ?-- Verbose mode (lots of debug information) -4 ?-- innodb_datafile is in REDUNDANT format -5 ?-- innodb_datafile is in COMPACT format -6 ?-- innodb_datafile is in MySQL 5.6 format -T ?-- retrieves only pages with index id = NM (N - high word, M - low word of id) -b <dir> -- Directory where external pages can be found. Usually it is pages-XXX/FIL_PE_TYPE_BLOB/ -i <file> -- Read external pages at their offsets from <file>. -p prefix -- Use prefix for a directory name in LOAD DATA INFILE command

接下来,我们演示场景的几种数据恢复场景。

场景1:drop table

是否启用了 innodb_file_per_table 其恢复方法有所差异,当发生误删表时,应尽快停止MySQL服务,不要启动。若 innodb_file_per_table=ON,最好只读方式重新挂载文件系统,防止其他进程写入数据覆盖之前块设备的数据。

如果评估记录是否被覆盖,可以表中某些记录的作为关键字看是否能从 ibdata1 中筛选出。

#?grep WOODYHOFFMAN ibdata1

Binary file ibdata1 matches

也可以使用 bvi(适用于较小文件)或 hexdump -C(适用于较大文件)工具

以表 sakila.actor 为例CREATE TABLE `actor` (`actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,`first_name` varchar(45) NOT NULL,`last_name` varchar(45) NOT NULL,`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`actor_id`),KEY `idx_actor_last_name` (`last_name`)) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8

首先恢复表结构信息1. 解析系统表空间获取 page 信息

./stream_parser -f /var/lib/mysql/ibdata1

2. 新建一个 schema,把系统字典表的 DDL 导入

cat dictionary/SYS_* | mysql recovered

3. 创建恢复目录

mkdir -p dumps/default

4. 解析系统表空间包含的字典表信息,

./c_parser -4f pages-ibdata1/FIL_PE_INDEX/0000000000000001.page -t dictionary/SYS_TABLES.sql > dumps/default/SYS_TABLES 2> dumps/default/SYS_TABLES.sql./c_parser -4f pages-ibdata1/FIL_PE_INDEX/0000000000000002.page -t dictionary/SYS_COLUMNS.sql > dumps/default/SYS_COLUMNS 2> dumps/default/SYS_COLUMNS.sql./c_parser -4f pages-ibdata1/FIL_PE_INDEX/0000000000000003.page -t dictionary/SYS_INDEXES.sql > dumps/default/SYS_INDEXES 2> dumps/default/SYS_INDEXES.sql./c_parser -4f pages-ibdata1/FIL_PE_INDEX/0000000000000004.page -t dictionary/SYS_FIELDS.sql > dumps/default/SYS_FIELDS 2> dumps/default/SYS_FIELDS.sql

5. 导入恢复的数据字典

cat dumps/default/*.sql | mysql recovered

6. 读取恢复后的表结构信息

./sys_parser -pmsandbox -d recovered sakila/actor

由于 5.x 版本 innodb 引擎并非完整记录表结构信息,会丢失 AUTO_INCREMENT 属性、二级索引和外键约束, DECIMAL 精度等信息。

若是 mysql 5.5 版本 frm 文件被从系统删除,在原目录下 touch 与原表名相同的 frm 文件,还能读取表结构信息和数据。若只有 frm 文件,想要获得表结构信息,可使用 mysqlfrm --diagnostic /path/to/xxx.frm,连接 mysql 会显示字符集信息。

innodb_file_per_table=OFF

因为是共享表空间模式,数据页都存储在 ibdata1,可以从 ibdata1 文件中提取数据。

1. 获取表的 table id,sys_table 存有表的 table id,sys_table 表 index id 是1,所以从0000000000000001.page 获取表 id./c_parser -4Df pages-ibdata1/FIL_PE_INDEX/0000000000000001.page -t dictionary/SYS_TABLES.sql | grep sakila/actor000000000B28 ?2A000001430D4D ?SYS_TABLES ?"sakila/actor" ?158 ?4 ?1 0 ? 0 ? "" ?0000000000B28 ?2A000001430D4D ?SYS_TABLES ?"sakila/actor" ?158 ?4 ?1 0 ? 0 ? "" ?0

2. 利用 table id 获取表的主键 id,sys_indexes 存有表索引信息,innodb 索引组织表,找到主键 id 即找到数据,sys_indexes 的 index id 是3,所以从0000000000000003.page 获取主键 id

./c_parser -4Df pages-ibdata1/FIL_PE_INDEX/0000000000000003.page -t dictionary/SYS_INDEXES.sql | grep 158000000000B28 2A000001430BCA ?SYS_INDEXES 158 376 "PRIMARY" ? 1 ? 3 ? 0 ? 4294967295000000000B28 2A000001430C3C ?SYS_INDEXES 158 377 "idx_actor_last_name" 1 ? 0 ? 0 ? 4294967295000000000B28 2A000001430BCA ?SYS_INDEXES 158 376 "PRIMARY" ? 1 ? 3 ? 0 ? 4294967295000000000B28 2A000001430C3C ?SYS_INDEXES 158 377 "idx_actor_last_name" 1 ? 0 ? 0 ? 4294967295

3. 知道了主键 id,就可以从对应 page 中提取表数据,并生成 sql 文件。

./c_parser -4f pages-ibdata1/FIL_PE_INDEX/0000000000000376.page -t sakila/actor.sql > dumps/default/actor 2> dumps/default/actor_load.sql

4. 最后导入恢复的数据

cat dumps/default/*.sql | mysql sakila

更多详细情况点击网页链接

请点击输入描述

在android4.0.几的版本上会出现这个问题,在线求解答

是你的MYSQL路径设置错了....

注意大小写的区分,比如你的MYSQL安装包是大写的 。

而你的PHP 配置路径 mysql 小写 那么就会产生这样的问题.

建议你重新安装PHP 和 MYSQL

如果你要整体整合apache2 mysql5.0 php5

在编译之前还有升级一些支持库

执行命令:# yum install ntp vim-enhanced gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel ncurses-devel libjpeg-devel libpng-devel liiff-devel freetype-devel pam-devel kernel

我给写个PHP和MYSQL的编译过程.

这里要注意的是,需要先安装mysql才能装PHP

[mysql] 安装路径: /usr/local/mysql //数据库目录你可以自己设置

比如你需要安装的MYSQL为:mysql-5.0.45-linux-i686.tar.gz

将mysql-5.0.45-linux-i686.tar.gz 放到 /usr/local/src 下

#cd /usr/local/src

#tar -zvxf mysql-5.0.45-linux-i686.tar.gz

#mv mysql-5.0.45/ /usr/local/mysql //移动

#groupadd mysql //创建mysql用户组

#cd /usr/local/mysql

#useradd -g mysql mysql //创建 mysql用户

#chown -R mysql . //注意后面有个 “.”

#chgrp -R mysql .

#scripts/mysql_install_db --user=mysql //初始化数据库

#chown -R root . //给root 最高权限

#chown -R mysql data //让mysql 对data [数据库]有最高权限

#cp ./support-files/mysql.server /etc/rc.d/init.d/mysqld

// 让mysql服务随系统启动

#chown root:root /etc/rc.d/init.d/mysqld //让root有启动权限.

#chmod 755 /etc/rc.d/init.d/mysqld

#cp ./support-files/my-huge.cnf /etc/my.cnf //移动配置文件.

#mv /usr/local/mysql/data /var/lib/mysql //这一步是移动数据库。你也可以不需要执行这一步.....如果安装出错,最好不要执行这一步,因为数据库权限经常会引起mysql运行不稳定

#bin/mysqld_safe --user=mysql & //连接数据库,如果安装成功.

会有如下提示:Starting mysqld daemon with databases from /var/lib/mysql //后面那是数据库路径

[PHP] 安装路径: /usr/local/php

#cd 到安装包所在目录

# tar xjvf 你的PHP版本文件名

# cd php-X.X.X //这里就是你解压后的那个目录名

值得注意的是php的安装需要一些库.

就是:libxml gd2

# ./configure \

"--prefix=/usr/local/php" \

"--with-apxs2=/usr/local/apache2/bin/apxs" \

"--with-config-file-path=/usr/local/php/etc" \

"--with-mysql=/usr/local/mysql" \

"--with-libxml-dir=/usr/local/libxml2" \

"--with-gd=/usr/local/gd2" \

"--with-jpeg-dir" \

"--with-png-dir" \

"--with-bz2" \

"--with-freetype-dir" \

"--with-iconv-dir" \

"--with-zlib-dir " \

"--with-openssl=/usr/local/openssl" \

"--with-mcrypt=/usr/local/libmcrypt" \

"--enable-soap" \

"--enable-gd-native-ttf" \

"--enable-ftp" \

"--enable-mbstring" \

"--enable-exif" \

"--disable-ipv6" \

"--disable-cgi" \

"--disable-cli"

# make

# make install

# mkdir /usr/local/php/etc

# cp php.ini-dist /usr/local/php/etc/php.ini

在Ubuntu12.04(64位)编译Android4.0源码时,遇到各种各样的问题。不是缺这个,就是少那个。现把这些问题和解决方法罗列出来(最新统计)。

错误(1):

/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory

make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1

解决:

sudo apt-get install libc6-dev-i386

错误(2):

make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1

解决:

sudo apt-get install g++-4.4-multilib

错误(3):

external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory

compilation terminated.

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1

解决:

sudo apt-get install zlib1g-dev

错误(4):

/usr/bin/ld: cannot find -lz

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1

解决:

sudo apt-get install lib32z1-dev

错误(5):

bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y

/bin/bash: bison: command not found

make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127

解决:

sudo apt-get install bison

错误(6):

Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l

/bin/bash: flex: command not found

make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127

解决:

sudo apt-get install flex

错误(7):

/usr/bin/ld: cannot find -lncurses

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1

解决:

sudo apt-get install lib32ncurses5-dev

错误(8):

prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory

compilation terminated.

make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main-common.o] Error 1

解决:

sudo apt-get install libx11-dev

错误(9):

sh: gperf: not found

calling gperf failed: 32512 at ./makeprop.pl line 96.

make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25

make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'

解决:

sudo apt-get install gperf

错误(10):

build/core/ja.mk:9: *** bin: Target ja module does not define any source or resource files. Stop.

解决:

删除源码根目录下的bin文件夹,这个文件夹是导入eclipse时创建的。

错误(11):

/usr/bin/ld: cannot find -lX11

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] 错误 1

解决/usr/bin/ld: Cannot Find -lxxx错误

/usr/bin/ld: cannot find -lltdl

collect2: ld returned 1 exit status

解决办法是(方法一):

[root@9-104 php-5.2.8]# updatedb

[root@9-104 php-5.2.8]# locate libltdl //提示/usr/bin/ld: cannot find -lxxx ,查找时候前面加lib:libxxx 住一 第一个l去掉

/usr/lib64/libltdl.so.3

/usr/lib64/libltdl.so.3.1.4

/usr/share/liool/libltdl

/usr/share/liool/libltdl/COPYING.LIB

/usr/share/liool/libltdl/Makefile.am

/usr/share/liool/libltdl/Makefile.in

/usr/share/liool/libltdl/README

/usr/share/liool/libltdl/acinclude.m4

/usr/share/liool/libltdl/aclocal.m4

/usr/share/liool/libltdl/config-h.in

/usr/share/liool/libltdl/config.guess

...

注意拉:

[root@9-104 php-5.2.8]# ln -s /usr/lib64/libltdl.so.3 /usr/lib64/libltdl.so

原理:给查找到的libxxx文件做软链接

ln -s /usr/lib64/libxxx.so.X(X代表数字) /usr/lib64/lxxx.so

解决办法是(方法二):

apt-get install libxx-dev(如:apt-get install libltdl-dev)

/usr/bin/ld: cannot find -lXt 这种情况一般就是库找不到,有可能你没安装,有可能你安装了但是路径不对。你可以先用 #locate libxt查看下,时候跟这有光的库,没有就安装。

以上两种办法若再出现如下错误:

<built-in>:0:0: note: this is the location of the previous definition

host StaticLib: libOpenglCodecCommon (out/host/linux-x86/obj/STATIC_LIBRARIES/li

bOpenglCodecCommon_intermediates/libOpenglCodecCommon.a)

host SharedLib: libOpenglRender (out/host/linux-x86/obj/lib/libOpenglRender.so)

/usr/bin/ld: cannot find -lX11

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/libOpenglRender.so] Error 1

解决方法(办法三亲测一定可行):$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

错误(12):

development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22: fatal error: GL/glx.h: No such file or directory compilation terminated.

make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1

解决方法:sudo apt-get install libgl1-mesa-dev

错误(13):

host SharedLib: lib64EGL_translator (out/host/linux-x86/obj/lib/lib64EGL_translator.so)

/usr/bin/ld: cannot find -lGL

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/lib64EGL_translator.so] Error 1

make: *** Waiting for unfinished jobs....

解决方法 :

sudo apt-get install libglu1-mesa-dev

错误(14):

host StaticLib: libGLcommon (out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon

_intermediates/libGLcommon.a)

host SharedLib: libGLES_CM_translator (out/host/linux-x86/obj/lib/libGLES_CM_tra

nslator.so)

/usr/bin/ld: cannot find -lGL

collect2: ld returned 1 exit status

make: *** [out/host/linux-x86/obj/lib/libGLES_CM_translator.so] Error 1

由于libGL.so系统默认没有进行库路径下的链接,还需要手动链接一下

解决方法: sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

解决方法: sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/mesa/libGL.so

在网上搜到上面的解决方法,可是按照上述方法做了,问题依旧。经过多方实验,才发现问题所在。通过apt-get install的库不是libGL.so.1.2了。而是libGL.so.1.2.0.

错误(15):

make: *** [out/host/linux-x86/obj/EXECUTABLES/obool_intermediates/Main.o] Error 1

后来发现了,原来是Ubuntu11.10里的gcc和g++版本太高了,于是执行下面的操作:

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

sudo rm -rf /usr/bin/gcc /usr/bin/g++

sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc

sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++

把默认的4.6版本换为了4.4,继续编译源码,又出现了另一个错误,大致提示为:

g++ selected multilib '32' not installed

继续奋战吧,安装相应的工具吧:sudo apt-get install g++-4.4-multilib,现在正在make -(开启多线程编译(不推荐),可能有时候会出现问题,最好是直接make)

2.解决各种依赖问题

首先安装一些库

View Code BASH

1 sudo apt-get install gnupg flex bison gperf libsdl1.2-dev libesd0-dev

2 sudo apt-get install libwxgtk2.6-dev squashfs-tools build-essential

3 sudo apt-get install zlib1g-dev pngcrush schedtool ia32-libs libncurses5-dev

这些库可能不全,如果出现问题,再google一下吧

2.error: “_FORTIFY_SOURCE” redefined [-Werror]

这个问题,据说与gcc版本有关,4.4版不会出现。

后来在google code 上找到了使用gcc 4.6编译的方法

修改build/core/combo/HOST_linux-x86.mk 文件 line 61

View Code BASH

1 -HOST_GLOBAL_CFLS += -D_FORTIFY_SOURCE=0

2 +HOST_GLOBAL_CFLS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

这是CyanogenMod打上的补丁

3.No rule to make target ‘out/target/product/generic/obj/lib/libcamera.so’

修改 /home/Android-2.3.4/frameworks/base/services/camera/libcameraservice/Android.mk,USE_CAMERA_STUB:=false ->ture

View Code BASH

1 LOCAL_PATH:= $(call my-dir)

2

3 # Set USE_CAMERA_STUB if you don't want to use the hardware camera.

4

5 # force these builds to use camera stub only

6 ifneq ($(filter sooner generic sim,$(TARGET_DEVICE)),)

7 USE_CAMERA_STUB:=true

8 endif

9

10 #########CHANGE THIS LINE############

11 USE_CAMERA_STUB:=true

12

13 ifeq ($(USE_CAMERA_STUB),)

14 USE_CAMERA_STUB:=false

15 endif