LINUX.ORG.RU

кросс-компиляция, x86_64 -> i386


0

0

дано: AMD64, CentOS, компилятор g++, исходники динамической либы, которые прекрасно компиляются, но в 64-битную .so-шку. хочется, чтобы .so-шка была 32-битной. что было сделано: установлены 32-битные либы (gtk2, glibc), в параметрах компилятора прописана опция -m32, прописаны соответствующие пути к либам и заголовкам. что получилось: однако ж, либа не компиляется

вот кусочек того, что выдает компилятор. CODE /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/cstring:88 : error: ‘::strcoll’ has not been declared /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/cstring:90 : error: ‘::strxfrm’ has not been declared /usr/lib/syslinux/com32/include/stdlib.h: In function ‘void _Exit(int)’: /usr/lib/syslinux/com32/include/stdlib.h:16: error: expected unqualified-id before string constant /usr/lib/syslinux/com32/include/stdlib.h:17: error: ‘_exit’ was not declared in this scope /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/cstdlib: At global scope: /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/cstdlib:10 5: error: ‘::div_t’ has not been declared /usr/lib/gcc/x86_64-redhat-linux/4.1.1/../../../../include/c++/4.1.1/cstdlib:10 6: error: ‘::ldiv_t’ has not been declared

вот еще: CODE /usr/include/wchar.h:726: error: ‘__FILE’ has not been declared /usr/include/wchar.h:727: error: ‘__FILE’ has not been declared /usr/include/wchar.h:742: error: ‘__FILE’ has not been declared /usr/include/wchar.h:749: error: ‘__FILE’ has not been declared /usr/include/wchar.h:756: error: ‘__FILE’ has not been declared /usr/include/wchar.h:768: error: ‘__FILE’ was not declared in this scope /usr/include/wchar.h:768: error: ‘__stream’ was not declared in this scope

как это лечится? может еще надо что-то доставить?

Re: кросс-компиляция, x86_64 -> i386

>установлены 32-битные либы (gtk2, glibc)

а binutils? а иксы для gtk2?

у меня для x86_64 -> i686 специальный чрут есть

ale ★★ ()
Ответ на: Re: кросс-компиляция, x86_64 -> i386 от ale

Re: кросс-компиляция, x86_64 -> i386

спасибо за подсказку, либа как-то собралась. но именно как-то. при попытке ее подключить получаю ошибку Exception in thread "main" java.lang.UnsatisfiedLinkError: /blabla/libcpp.gui.linux.so: /blabla/libcpp.gui.linux.so: undefined symbol: _ZTVN10__cxxabiv117__class_type_infoE

ldd говорит, что либа слинкована статически, хотя я собирала ее с параметрами -fPIC -shared. как это понять?

Infinity ()
Ответ на: Re: кросс-компиляция, x86_64 -> i386 от Infinity

Re: кросс-компиляция, x86_64 -> i386

все собрала либу :) . все дело было в том, что среда, в которой я ее собирала, плодила кучу скрытых файлов, в которых прописывала, что она лезет в переменные окружения, в которых само собой прописано все 64-битное. я это все вынесла, теперь она лезет только туда, куда я ей разрешила параметрами -I... -L... =)

Infinity ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.