错误不受支持重定位到程序集系统调用

时间:2015-11-18 16:39:15

标签: linux gcc assembly glibc powerpc

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

1 个答案:

答案 0 :(得分:3)

SYS_ify(swapcontext)宏应评估为__NR_swapcontext,这是swapcontext系统调用的编号。

__NR_swapcontext是一个宏,而不是变量名 - 所以它应该由预处理器解析(参见asm/unistd.h)。看起来你没有这个的定义,所以它没有被预处理到系统调用号,所以留下了一个未解析的变量名。

所以,你的问题是缺少__NR_swapcontext的定义,它应该由glibc正在编译的内核头文件提供。你有可用的正确内核头文件吗?

由于swapcontext是一个仅限powerpc的系统调用,因此您可能会尝试针对构建计算机的标头编译glibc。