Re: трудность на Solaris
Maxim Dounin
mdounin на mdounin.ru
Ср Авг 11 21:23:37 MSD 2010
Hello!
On Tue, Aug 10, 2010 at 01:01:06PM -0400, sergey ivanov wrote:
> Привет всем,
> я хотел бы построить nginx с использованием Sunstudio 12 update 1 на
> 64-битной машине для 32-битной архитекруты, чтобы можно было это
> использовать в виртуальных машинах типа VirtualBox.
Just a side note: кросс-компиляция nginx'а - дело неблагодарное и
неподдерживаемое.
> Параметры которые я передают configure следующие:
> ---
> ./configure --prefix=/opt/nginx --sbin-path=/opt/nginx/sbin/i386/nginx \
> --with-cpu-opt=pentium --with-http_ssl_module
> --with-cc-opt="-I/usr/sfw/include -I/opt/omni/include/i386" \
> --with-ld-opt=-L/opt/omni/lib -R/opt/omni/lib -R/usr/sfw/lib -L/usr/sfw/lib
> ---
> Компиляция вызывается с ключём -xchip=pentium, как например в
> ---
> cc -c -fast -xipo -xchip=pentium -errwarn=%all -g -I/usr/sfw/include
> -I/opt/omni/include/i386 -I src/core -I src/event -I src/event/modules
> -I src/os/unix -I objs \
> -o objs/src/core/nginx.o \
> src/core/nginx.c src/os/unix/ngx_sunpro_x86.il
> ---
> Однако линкеру -xchip=pentium не передаётся
И не должно ему ничего подобного передаваться, это флаг
оптимизации для компилятора. Более того, он подобных опций не
понимает.
> В результате получается
> ---
> bash-3.2$ file /var/tmp/nginx-0.7.67/objs/ngx_modules.o
> /var/tmp/nginx-0.7.67/objs/ngx_modules.o: ELF 32-bit LSB
> relocatable 80386 Version 1 [SSE CMOV]
> bash-3.2$ file /var/tmp/nginx-0.7.67/objs/nginx
> /var/tmp/nginx-0.7.67/objs/nginx: ELF 32-bit LSB executable
> 80386 Version 1 [SSE2 SSE FXSR AMD_3DNow CMOV FPU], dynamically
> linked, not stripped
> ---
Если я правильно понимаю, hardware capabilities выставляются
линкером на основе таковых из файлов, используемых при
линковке. Т.е. скорей всего где-то затесалась скажем статическая
библиотека, использующая AMD_3DNow и прочее.
Пройдитесь file'ом по всем аргументам ld (включая библиотеки из
-l), станет понятнее.
Maxim Dounin
Подробная информация о списке рассылки nginx-ru