【问题标题】:Error unsupported relocate against assembly system call针对程序集系统调用的不支持重定位错误
【发布时间】:2016-02-20 12:18:53
【问题描述】:

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

【问题讨论】:

  • 你可能在 glibc 邮件列表上运气更好。

标签: linux gcc assembly glibc powerpc


【解决方案1】:

那里的SYS_ify(swapcontext) 宏应该计算为__NR_swapcontext,这是swapcontext 系统调用的编号。

__NR_swapcontext 是一个宏,而不是一个变量名——所以它应该已经被预处理器解析了(参见asm/unistd.h)。看起来您对此没有定义,因此它没有被预处理为系统调用号,因此给您留下了一个未解析的变量名。

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

由于 swapcontext 是一个仅限 powerpc 的系统调用,因此您可能正在尝试针对构建机器的头文件编译 glibc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 2012-08-02
    • 2021-11-05
    • 2020-04-22
    相关资源
    最近更新 更多