针对程序集系统调用的错误不受支持的重定位
Error unsupported relocate against assembly system call
我正在尝试为 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'
那里的 SYS_ify(swapcontext)
宏的计算结果应该是 __NR_swapcontext
,这是 swapcontext 系统调用的编号。
__NR_swapcontext
是一个宏,而不是变量名 - 所以它应该已经被预处理器解析(参见 asm/unistd.h
)。看起来你没有这个定义,所以它没有被预处理到系统调用号,所以给你留下了一个未解析的变量名。
所以,您的问题是缺少 __NR_swapcontext
的定义,它应该由 glibc 编译所针对的内核 headers 提供。你有正确的内核 headers 可用吗?
由于 swapcontext
是一个 powerpc-only 系统调用,您可能正在尝试针对构建机器的 headers 编译 glibc。
我正在尝试为 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'
那里的 SYS_ify(swapcontext)
宏的计算结果应该是 __NR_swapcontext
,这是 swapcontext 系统调用的编号。
__NR_swapcontext
是一个宏,而不是变量名 - 所以它应该已经被预处理器解析(参见 asm/unistd.h
)。看起来你没有这个定义,所以它没有被预处理到系统调用号,所以给你留下了一个未解析的变量名。
所以,您的问题是缺少 __NR_swapcontext
的定义,它应该由 glibc 编译所针对的内核 headers 提供。你有正确的内核 headers 可用吗?
由于 swapcontext
是一个 powerpc-only 系统调用,您可能正在尝试针对构建机器的 headers 编译 glibc。