我正在尝试为powerpc飞思卡尔评估板交叉编译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'
最佳答案
那里的SYS_ify(swapcontext)
宏应该计算为__NR_swapcontext
,这是swapcontext系统调用的编号。__NR_swapcontext
是宏,而不是变量名-因此它应该已由预处理程序解析(请参阅asm/unistd.h
)。看来您没有为此的定义,因此未对它进行预处理为syscall号,因此给您留下了一个未解析的变量名。
因此,您的问题是缺少__NR_swapcontext
的定义,应该由glibc编译的内核 header 提供该定义。你有正确的内核头文件吗?
由于swapcontext
是仅powerpc的系统调用,因此您可能尝试改为针对构建计算机的 header 编译glibc。
关于linux - 错误不支持根据组装系统调用进行重定位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33785554/