gpt4 book ai didi

makefile - Linaro 交叉编译 Glibc for ARM 错误且 swi 表达式无效

转载 作者:行者123 更新时间:2023-12-02 21:45:03 42 4
gpt4 key购买 nike

我正在尝试在 32 位 Ubuntu 10.04 虚拟机上使用 Linaro 工具链为 ARM 构建带有调试符号的 glibc-2.13。根据我的研究,执行此操作的步骤(以及我已采取的步骤)如下所示:

mkdir /home/user/Desktop/glibc
cd /home/user/Desktop/glibc
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.13.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-2.13.tar.bz2
tar xvjf glibc-2.13.tar.bz2
tar xvf glibc-ports-2.13.tar.gz
mkdir -p glibc-2.13/ports
cp -r glibc-ports-2.13/* glibc-2.13/ports
mkdir tmp
mkdir glibc-build
cd glibc-build
export CFLAGS="-O1 -g"
export CPPFLAGS="-O1 -g"
export CC=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-gcc
export CXX=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-g++
../glibc-2.13/configure --host=arm-linux --prefix=/home/user/Desktop/glibc/tmp --enable-addons ports=yes
make

配置步骤完成,当我继续进行 make 时,不久后就会出现构建错误,并出现以下错误:

In file included from ../ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h:23:0,
from ../csu/libc-tls.c:21,
from ../ports/sysdeps/arm/libc-tls.c:20:
../sysdeps/unix/sysv/linux/ldsodefs.h:64:0: note: this is the location of the previous definition
/tmp/ccgCNS8e.s: Assembler messages:
/tmp/ccgCNS8e.s:174: Error: invalid swi expression
/tmp/ccgCNS8e.s:174: Error: value of 983045 too large for field of 2 bytes at 196
make[2]: *** [/home/user/Desktop/glibc/glibc-build/csu/libc-tls.o] Error 1
make[2]: Leaving directory `/home/user/Desktop/glibc/glibc-2.13/csu'
make[1]: *** [csu/subdir_lib] Error 2
make[1]: Leaving directory `/home/user/Desktop/glibc/glibc-2.13'
make: *** [all] Error 2

据我所知,“tls”是必需的,如果我尝试构建 --without-tls ,它会错误地表明我确实需要 tls。我在 Google 上没有找到任何有关此问题的信息。

有谁知道我如何解决这个问题并克服这个错误?谢谢-

编辑:我在配置命令之前添加了以下导出,但仍然遇到相同的错误:

export CC=/home/user/gemini/toolchain/linaro/bin/arm-linux-gnueabi-gcc
export CXX=/home/user/gemini/toolchain/linaro/bin/arm-linux-gnueabi-g++
export AR=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-ar
export AS=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-as
export LD=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-ld
export RANLIB=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-ranlib

最佳答案

我不知道到底是什么交易 - 可能为我的工具链指定了不正确的 --host 参数。我最终使用以下命令在我的 Ubuntu 32 位 10.04 VM 上成功编译了 glibc 2.13:

sudo apt-get install libmpc-dev -y
sudo apt-get install libgmp-dev -y
sudo apt-get install libmpfr-dev -y
sudo apt-get install autoconf -y
sudo apt-get install gawk -y
cd ~/Desktop
GLIBC_VERSION="2.13"
rm -rf glibc
mkdir /home/user/Desktop/glibc
cd /home/user/Desktop/glibc
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-$GLIBC_VERSION.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-$GLIBC_VERSION.tar.bz2
rm -rf glibc-build/ tmp/ glibc-$GLIBC_VERSION/ glibc-ports-$GLIBC_VERSION/
tar xvjf glibc-$GLIBC_VERSION.tar.bz2
tar xvf glibc-ports-$GLIBC_VERSION.tar.gz
mkdir -p glibc-$GLIBC_VERSION/ports
cp -r glibc-ports-$GLIBC_VERSION/* glibc-$GLIBC_VERSION/ports
mkdir tmp
mkdir glibc-build
cd glibc-build
CFLAGS="-O1 -g"
CPPFLAGS="-O1 -g"
CC=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-gcc
CXX=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-g++
AR=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-ar
AS=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-as
LD=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-ld
RANLIB=/home/user/proj/toolchain/linaro/bin/arm-linux-gnueabi-ranlib
export PATH=$PATH:/home/user/proj/toolchain/linaro/bin
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
../glibc-$GLIBC_VERSION/configure --with-tls --host=arm-linux-gnueabi --prefix=/home/user/Desktop/glibc/tmp --enable-addons ports=yes
make
cd ../

关于makefile - Linaro 交叉编译 Glibc for ARM 错误且 swi 表达式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13842361/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com