我正在尝试为powerpc freescale评估板交叉编译glibc-2.18。
在构建的其中一个阶段,我得到以下错误:
glibc
Failed:
../sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S: Assembler messages:
../sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S:40: Error: unsupported relocation against swapcontext
make[3]: *** [/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18-compile/stdlib/setcontext.o] Error 1
make[3]: Leaving directory /home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18/stdlib'
make[2]: *** [stdlib/subdir_lib] Error 2
make[2]: Leaving directory `/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18-compile'
答案 0 :(得分:3)
SYS_ify(swapcontext)
宏应评估为__NR_swapcontext
,这是swapcontext系统调用的编号。
__NR_swapcontext
是一个宏,而不是变量名 - 所以它应该由预处理器解析(参见asm/unistd.h
)。看起来你没有这个的定义,所以它没有被预处理到系统调用号,所以留下了一个未解析的变量名。
所以,你的问题是缺少__NR_swapcontext
的定义,它应该由glibc正在编译的内核头文件提供。你有可用的正确内核头文件吗?
由于swapcontext
是一个仅限powerpc的系统调用,因此您可能会尝试针对构建计算机的标头编译glibc。