LINUX.ORG.RU

Если честно то какойто глупый вопрос, если у тебя приложение написано на C/C++ а не на ассемблере, то ему должно быть абсолютно все равно под какой системой собираться (32 или 64). Если оно конечно написано правильно.
Если нет то кое какие флаги компиляции могут помочь - но не всегда, в чем конкретно проблема ?
Error лог показать можеш ?

zaz ★★★★
()
Ответ на: комментарий от zaz

> Если оно конечно написано правильно.

Бугога !

lenin
()

> Помогите пожалуйста, какие параметры для ./configure и make надо использовать чтобы компилить 32 битное приложение по 64 битной системой.

Нет таких флагоф и быть не может. Кросс - компиляцию настраивайте.

lenin
()
Ответ на: комментарий от lenin

система: 2.6.12-12mdksmp #1 SMP Fri Sep 9 17:20:34 CEST 2005 x86_64 AMD Athlon(tm) 64 Processor 3200+ unknown GNU/Linux

ну например компилится xmms, на выходе получается, например:

$>file xmms/main.o xmms/main.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped

а хотелось бы например ELF 32-bit Тот же xine чтоб показывал с виндовыми кодеками должен быть 32 битным. А вот как закомпилить его в 32 битный?

ckv
() автор топика
Ответ на: комментарий от ckv

из-за этого почти любой make заканчивается типа: /usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl библиотеки то установлены 32 битные, а он я так понимаю ищет 64. Хотя если скачать 32 битные бинарники - они пашут. А вот как скомпилить...

ckv
() автор топика
Ответ на: комментарий от lenin

> Нет таких флагоф и быть не может. Кросс - компиляцию настраивайте.

Ленин, выдыхай... еще только утро, а ты должен выжить ;)

"./configure i686-pc-linux-gnu" / "./configure x86_64-pc-linux-gnu" для кого придумали? Или "-m64" / "-m32" свитчи? ;)

e
()

Google -> LFS -> CLFS -> читаем-читаем-читаем-делаем.

Или вообще не паримся, а юзаем Зюзю или Федору, там 32/64 либки стоят в параллели, нужно лишь указать ./configure триплет для желаемого хоста.

e
()
Ответ на: комментарий от ckv

> Извините :) а куда пихать свитчи? :)

Смотря какие свитчи... ежели цисковые - то в стойку, а ежели флаги - то в CFLAGS/CXXFLAGS выносить... ну а i686-pc-linux-gnu - делать как:

./configure ... i686-pc-linux-gnu

e
()
Ответ на: комментарий от ckv

> а слабо список команд полный, типа: CFLAGS="......." ./configure ..... make .... ...

А man gcc слабо асилить от корки до корки? ;)

export CFLAGS="-O2 -m32 -march=$arch -pipe"
export CXXFLAGS="-O2 -m32 -march=$arch -pipe"

./configure --help | less

читаем...

./configure $opts i686-pc-linux-gnu

make ...

Гугль тоже слабо асилить? ;)

e
()
Ответ на: комментарий от e

да... походу придётся читать... ибо что пихать в $arch и $opts на данный момент своей жизни я не догоняю...

ckv
() автор топика
Ответ на: комментарий от ckv

В $arch - название проца (man gcc в обязательном порядке), в $opts - результаты чтения `./configure --help | less`, но почитать реально будет не лишним...

e
()
Ответ на: комментарий от e

да уже мельком глянул... начинаешь ставить флаги, configure сваливается на проверке библиотек... замкнутый круг блин... проще 32 битную поставить наверное...

ckv
() автор топика
Ответ на: комментарий от ckv

Пошёл с другого конца...

Все флаги по умолчанию... всмысле без мудрежа с 32 бит...

/usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl /usr/lib/libesd.so: could not read symbols: File in wrong format collect2: ld returned 1 exit status make[3]: *** [libesdout.la] Ошибка 1 make[3]: Leaving directory `/home/kostik/Desktop/Files/src/xmms-1.2.10/Output/esd' make[2]: *** [all-recursive] Ошибка 1 make[2]: Leaving directory `/home/kostik/Desktop/Files/src/xmms-1.2.10/Output' make[1]: *** [all-recursive] Ошибка 1 make[1]: Leaving directory `/home/kostik/Desktop/Files/src/xmms-1.2.10' make: *** [all] Ошибка 2

так он ищет библиотеки в 32 битной папке... хотя в 64 ьитной тоже есть библиотеки такие... пробовал --libdir=/usr/lib64 - один хер лезет в /usr/lib

И как понять...

ckv
() автор топика
Ответ на: комментарий от ckv

Эммм... можно линковать непосредственно на нужные либки, т.е. gcc src.c -o binary /usr/lib64/libdl.so, можно указать линкеру архитектуру флагом -m elf_i386 (могу ошибаться, man ld).

Встречный вопрос - может проще нативный бинарь для 64 бит собрать, у меня собирается 100% вообще на true-64bit?

И еще может быть такая вот вещь - 1.2.10 - пакет древний, поэтому о существовании x86_64 и multilib на х86 скрипты конфигурирования в его составе могут и не знать. Поэтому - возьми любой свежий пакет (glib 2.12.0), например, и дерни оттуда 2 скрипта - config.guess и config.sub и подложи их заместо штатных от xmms, после чего переконфигурь и попробуй собрать.

e
()
Ответ на: комментарий от e

так я уже и пробую 64 битную компилить, а он лезет за библиотеками не в тот каталог почему то... не в /usr/lib64 а в /usr/lib

ckv
() автор топика
Ответ на: комментарий от e

/usr/lib/libasound.so: could not read symbols: File in wrong format

collect2: ld returned 1 exit status

make[3]: *** [libALSA.la] Ошибка 1

make[3]: Leaving directory `/home/kostik/Desktop/Files/src/xmms-1.2.10/Output/alsa'

make[2]: *** [all-recursive] Ошибка 1

make[2]: Leaving directory `/home/kostik/Desktop/Files/src/xmms-1.2.10/Output'

make[1]: *** [all-recursive] Ошибка 1

make[1]: Leaving directory `/home/kostik/Desktop/Files/src/xmms-1.2.10'

make: *** [all] Ошибка 2

$ file /usr/lib/libasound.so.2.0.0

/usr/lib/libasound.so.2.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped

и как тут быть? :)

ckv
() автор топика
Ответ на: комментарий от ckv

Хотя есть:

$ file /usr/lib64/libasound.so.2.0.0

/usr/lib64/libasound.so.2.0.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped

cat /etc/ld.so.conf

include ld.so.conf.d/*.conf

/usr/X11R6/lib64

/usr/X11R6/lib

/usr/lib/qt3/lib64

/usr/lib/qt3/lib

/usr/lib64

/lib64

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