3

我正在尝试在 Linux Mint 15 上编译 Cyanogenmod。并收到以下错误。

host StaticLib: libmincrypt (/home/benji/Source/out/host/linux-x86/obj/STATIC_LIBRARIES/libmincrypt_intermediates/libmincrypt.a)
ERROR: prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/bin/x86_64-linux-ar only run on 64-bit linux
make: *** [/home/benji/Source/out/host/linux-x86/obj/STATIC_LIBRARIES/libmincrypt_intermediates/libmincrypt.a] Error 1
make: *** Waiting for unfinished jobs....
# In case value of PACKAGES is empty.

-

benji@ultranoid ~/Source/prebuilts/tools/gcc-sdk $ ./gcc
ERROR: ./../../gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/bin/x86_64-linux-gcc only run on 64-bit linux

我无法弄清楚是什么原因造成的。我正在安装 64 位。请指教。

benji@ultranoid ~/Source $ uname -p
x86_64
4

3 回答 3

6

解决方法

注释掉 prebuilts/tools/gcc-sdk/gcc 的第 23-38 行

示例: http: //pastebin.com/qH0BYcSF

于 2013-06-13T11:14:50.627 回答
4

正如这里所指出的,在 Android 构建系统中,x32 与 x64 主机的测试基于file -L "$SHELL" | grep -q "x86[_-]64". 换句话说,它测试当前 shell 是否是 64 位二进制文​​件。

所以一个可能的答案是:检查环境变量的值$SHELL是否是 shell 可执行文件的有效路径。

  1. 您可以尝试使用chsh或更改外壳

  2. 创建一个指向您最喜欢的 shell 的链接,以便满足 $SHELL 。后者对我有用——我只是将 /bin/bash 链接到 $SHELL 指向的位置。

于 2013-08-08T21:56:27.363 回答
0

用于uname -m检查系统。

#file -L "$SHELL" | grep -q "x86[_-]64"

#如果[$?!= 0 ]; 然后

# $SHELL is not a 64-bit executable, so assume our userland is too.

# echo "错误:$MY_TOOL 只能在 64 位 linux 上运行"

# 退出 1

#fi

变成:

ARCH_OS=uname -m | tr '[:upper:]' '[:lower:]'

if [ "$ARCH_OS" != "x86_64" ] ; then
    echo "ERROR: $MY_TOOL only run on 64-bit linux from uname -m"
    exit 1
fi
于 2017-12-21T03:55:28.577 回答