我正在尝试为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/

10-12 04:17