在使用crosstool-0.43制作交叉编译工具链编译glibc过程中有时可能会报出如下错误(我当时使用的是glibc-2.3.2):
../sysdeps/unix/sysv/linux/bind.S: Assembler messages:../sysdeps/unix/sysv/linux/bind.S:5: Error: symbol `__bind' is already defined
make[2]: ***
[/home/zht/cross-compiler/build-tools/build-glibc/socket/bind.o] Error 1
make[2]: Leaving directory `/home/zht/cross-compiler/build-tools/glibc-2.3.6/socket'
make[1]: ***
这里的glibc的版本不是唯一的,也就是说在编译glibc-2.3.2或glibc-2.3.5时都有可能出现这个错误,目前我使用的一种解决方法是打下面两个补丁:
6230_all_arm-glibc-2.3.6-socket-no-weak-alias.patch
6530_all_sparc-glibc-2.3.6-socket-no-weak-alias.patch
比如使用crosstool-0.43制作时报了这个错误,这时首先修改arm.sh中eval `XXXXX` sh all.sh --notest后边加上--nounpack,表示下次执行脚本时不需要解压缩软件包(因为之前已经解压缩好了)。之后在终端中进入/home/lgx/crosstool-0.43/build/arm-linux/gcc-4.1.0-glibc-2.3.2/glibc-2.3.2 文件夹中,并将以上两个补丁拷贝到这个目录中,输入如下指令:
patch -Np1 -i 6230_all_arm-glibc-2.3.6-socket-no-weak-alias.patch
patch -Np1 -i 6530_all_sparc-glibc-2.3.6-socket-no-weak-alias.patch
之后,再进行编译即可。