|
在编译xine时出现了这样的问题
gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../../include -I../../include -I../../src -I../../src/xine-engine -I../../src/xine-engine -I../../src/xine-utils -I../../src/input -I../../src/input -I../../lib -I/usr/X11R6/include -mtune=pentiumpro -O3 -pipe -fomit-frame-pointer -falign-functions=4 -falign-loops=4 -falign-jumps=4 -mpreferred-stack-boundary=2 -fexpensive-optimizations -fschedule-insns2 -fno-strict-aliasing -ffast-math -funroll-loops -finline-functions -Wall -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -DXINE_COMPILE -Wnested-externs -Wcast-align -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes -MT memcpy.lo -MD -MP -MF .deps/memcpy.Tpo -c memcpy.c -fPIC -DPIC -o .libs/memcpy.o
memcpy.c: In function 'sse_memcpy':
memcpy.c:221: error: invalid lvalue in assignment
memcpy.c:222: error: invalid lvalue in assignment
memcpy.c:244: error: invalid lvalue in assignment
memcpy.c:245: error: invalid lvalue in assignment
memcpy.c: In function 'mmx_memcpy':
memcpy.c:299: error: invalid lvalue in assignment
memcpy.c:300: error: invalid lvalue in assignment
memcpy.c: In function 'mmx2_memcpy':
memcpy.c:366: error: invalid lvalue in assignment
memcpy.c:367: error: invalid lvalue in assignment
make[3]: *** [memcpy.lo] 错误 1
make[3]: Leaving directory `/usr/local/tool/xine-lib-1.0.1/src/xine-utils'
make[2]: *** [all-recursive] 错误 1
make[2]: Leaving directory `/usr/local/tool/xine-lib-1.0.1/src'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/usr/local/tool/xine-lib-1.0.1'
make: *** [all] 错误 2
查看文件出错的地方为:
if(((unsigned long)from) & 15)
/* if SRC is misaligned */
for(; i>0; i--)
{
__asm__ __volatile__ (
"prefetchnta 320(%0)\n"
"prefetchnta 352(%0)\n"
"movups (%0), %%xmm0\n"
"movups 16(%0), %%xmm1\n"
"movups 32(%0), %%xmm2\n"
"movups 48(%0), %%xmm3\n"
"movntps %%xmm0, (%1)\n"
"movntps %%xmm1, 16(%1)\n"
"movntps %%xmm2, 32(%1)\n"
"movntps %%xmm3, 48(%1)\n"
:: "r" (from), "r" (to) : "memory");
((const unsigned char *)from)+=64;
((unsigned char *)to)+=64;
}
分析应该是
((const unsigned char *)from)+=64;
((unsigned char *)to)+=64;
类型转化时产生的错误,但是想了几种修改方法也不行。望请大侠帮忙解决。 |
|