在Linux(CentOS)下,AAPT解析APK指令报错少库

在Linux(CentOS)下,AAPT解析APK,先后报了如下的错:

# ./aapt
-bash: ./aapt: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
./aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
./aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

经查,发现是64位的系统,想运行32位的程序(aapt),从而找不到一些共享库;安装它们即可:

# yum install glibc*.i686
# yum install zlib*.i686
# yum install libstdc++.so.6

补充,如下命令查看系统版本:

#uname -r
2.6.32-431.20.3.el6.x86_64
#cat /etc/system-release
CentOS release 6.5 (Final)

参考文章一有:

1、centos 64位系统使用android 出现android-sdk-linux aapt error=2

但是在centos上就要复杂一些。

1.yum install glibc.i686
之后发现如下错误error while loading shared libraries: libz.so.1,ok继续安装libz
2.sudo yum install zlib.i686
之后发现error while loading shared libraries: libstdc++.so.6,执行
3.sudo yum install libstdc++.i686

如果还是不可以,可以尝试下面的命令

sudo yum install libXrender.i686
sudo yum install fontconfig.i686
sudo yum install zlib.i686
sudo yum install libXext.i686
sudo yum install libstdc++.i686
如果还报2的错误 按下面方式执行

2、
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file
在64位的linux(centos系统)中安装android-sdk后,运行aapt命令,出现
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
出现这种情况的原因是,aapt需要libstdc++的32位版本,系统应该只安装64位版本,可以通过rpm查看是否,命令:
rpm -ql libstdc++ | cat -n
1 /usr/lib64/libstdc++.so.6
2 /usr/lib64/libstdc++.so.6.0.8
说明没有安装32的libstdc++版本,需要安全32的,可以通过yum安装,先执行
[root@BJ-NQ-V-PPD002 ~]# yum list | grep libstdc++
libstdc++.i386 4.1.2-54.el5 nqyum
libstdc++.x86_64 4.1.2-54.el5 installed
libstdc++-devel.x86_64 4.1.2-54.el5 installed
compat-libstdc++-296.i386 2.96-138 nqyum
compat-libstdc++-33.i386 3.2.3-61 nqyum
compat-libstdc++-33.x86_64 3.2.3-61 nqyum
libstdc++-devel.i386 4.1.2-54.el5 nqyum
libstdc++44-devel.i386 4.4.7-1.el5 nqyum
libstdc++44-devel.x86_64 4.4.7-1.el5 nqyum
发现libstdc++.i386(注有的可能是i586), 然后执行安装命令
yum -y install libstdc++.i386
即可,安装完毕后,运行aapt命令就OK了。


参考文章二:
centos_Error: Protected multilib versions_解决方法
yum install libc.so.6
Loaded plugins: fastestmirror, refresh-packagekit
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Repository contrib is listed more than once in the configuration
Loading mirror speeds from cached hostfile
* base: ftp.stust.edu.tw
* epel: mirrors.yun-idc.com
* extras: mirror01.idc.hinet.net
* rpmforge: ftp.riken.jp
* updates: ftp.tc.edu.tw
Setting up Install Process
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.
–> Running transaction check
—> Package glibc.i686 0:2.12-1.107.el6_4.2 will be installed
–> Processing Dependency: libfreebl3.so(NSSRAWHASH_3.12.3) for package: glibc-2.12-1.107.el6_4.2.i686
–> Processing Dependency: libfreebl3.so for package: glibc-2.12-1.107.el6_4.2.i686
–> Running transaction check
—> Package nss-softokn-freebl.i686 0:3.14.3-3.el6_4 will be installed
–> Finished Dependency Resolution
Error: Multilib version problems found. This often means that the root
cause is something else and multilib version checking is just
pointing out that there is a problem. Eg.:
1. You have an upgrade for glibc which is missing some
dependency that another package requires. Yum is trying to
solve this by installing an older version of glibc of the
different architecture. If you exclude the bad architecture
yum will tell you what the root cause is (which package
requires what). You can try redoing the upgrade with
–exclude glibc.otherarch … this should give you an error
message showing the root cause of the problem.
2. You have multiple architectures of glibc installed, but
yum can only see an upgrade for one of those arcitectures.
If you don’t want/need both architectures anymore then you
can remove the one with the missing update and everything
will work.
3. You have duplicate versions of glibc installed already.
You can use “yum check” to get yum show these errors.
…you can also use –setopt=protected_multilib=false to remove
this checking, however this is almost never the correct thing to
do as something else is very likely to go wrong (often causing
much more problems).

   Protected multilib versions: glibc-2.12-1.107.el6_4.2.i686 != glibc-2.12-1.47.el6.x86_64

Error: Protected multilib versions: nss-softokn-freebl-3.14.3-3.el6_4.i686 != nss-softokn-freebl-3.12.9-11.el6.x86_64
You could try using –skip-broken to work around the problem
** Found 111 pre-existing rpmdb problem(s), ‘yum check’ output follows:
SDL-1.2.14-3.el6.x86_64 is a duplicate with SDL-1.2.14-2.el6.x86_64
atlas-3.8.4-2.el6.x86_64 is a duplicate with atlas-3.8.4-1.el6.x86_64
audit-libs-2.2-2.el6.x86_64 is a duplicate with audit-libs-2.1.3-3.el6.x86_64
augeas-libs-0.9.0-4.el6.x86_64 is a duplicate with augeas-libs-0.9.0-1.el6.x86_64
bash-4.1.2-15.el6_4.x86_64 is a duplicate with bash-4.1.2-8.el6.centos.x86_64
boost-date-time-1.41.0-17.el6_4.x86_64 is a duplicate with boost-date-time-1.41.0-11.el6_1.2.x86_64
错误的解决方法(很多就在提示里面):

1 手动处理重复

这个是要死人的

2 删除重复的

这个有时候会导致已经编译和安装的软件出问题,所以还是要有心理准备

3 自动删除重复命令

package-cleanup –cleandupes
这个也会导致#2 的问题

4 在yum命令后面加入忽略参数:–setopt=protected_multilib=false

you can also use –setopt=protected_multilib=false to remove
this checking, however this is almost never the correct thing to
do as something else is very likely to go wrong (often causing
much more problems).
这里说了,很可能导致more probems。不过么,现实中,可以试试看,尤其是保持一个老系统照旧运行时,这个方法会起作用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值