问题描述
我试图交叉编译的glibc-2.18飞思卡尔PowerPC的评估板。
目前我得到下面的错误在构建的一个阶段:
的glibc
失败:
../sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S:汇编的消息:
../sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S:40:错误:对不支持swapcontext搬迁
使[3]:*** [/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18-compile/stdlib/setcontext.o]错误1
使[3]:离开目录/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18/stdlib
使[2]:*** [STDLIB / subdir_lib]错误2
使[2]:离开目录`/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18
使[1]:*** [全部]错误2
使[1]:离开目录`/home/user/Desktop/SmoothWall/bcutm/distrib/build/sources/glibc/glibc-2.18-compile
的 SYS_ify(swapcontext)
宏应该评估为 __ NR_swapcontext
,这对于swapcontext系统调用的数目。
__ NR_swapcontext
是一个宏观的,而不是一个变量名 - 所以它应该被preprocessor解决(见 ASM / unistd。 ^ h
)。它看起来像你没有这个定义,所以它没有得到preprocessed的系统调用号,所以留下你一个悬而未决的变量名。
所以,你的问题是缺少的定义__ NR_swapcontext
,它应该由glibc的编译是针对内核头文件提供。你有正确的内核头文件是否可用?
由于 swapcontext
是一个唯一的PowerPC的系统调用,它有可能,你想编译glibc的对你构建机器的头吧。
I am trying to cross compile glibc-2.18 for powerpc freescale evaluation board.
At one of the stages in the build I get following error:
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'
The SYS_ify(swapcontext)
macro there should evaluate to __NR_swapcontext
, which is the number for the swapcontext system call.
__NR_swapcontext
is a macro, not a variable name - so it should have been resolved by the preprocessor (see asm/unistd.h
). It looks like you don't have a definition for this, and so it didn't get preprocessed to the syscall number, and so left you with an unresolved variable name.
So, your problem is the missing definition for __NR_swapcontext
, which should be provided by the kernel headers that glibc is compiling against. Do you have the correct kernel headers available?
Since swapcontext
is a powerpc-only system call, it it possible that you're trying to compile glibc against your build machine's headers instead.
这篇关于对组装系统调用错误不支持的重定位的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!