Russian Qt Forum
Ноябрь 23, 2024, 05:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: кроскомпиляция i386 для amd64 и наоборот.  (Прочитано 6034 раз)
vanessa
Гость
« : Апрель 20, 2011, 17:43 »

Что-то гугль мне не очень помог в таком вопросе: что нужно чтоб на i386 системе собирать бинарники для amd64? интересует и зеркальная сборка - на amd64 для i386. система - Debian
Записан
Fat-Zer
Гость
« Ответ #1 : Апрель 20, 2011, 18:42 »

1-е - очень геморно (сам я не пробовал) и проще использовать нативную среду. Нужны соответствующие библиотеки и кросс-компилятор (хотя можно попробовать и обычный с ключом -m64)
2-е - также нужны библиотеки и компилятору задавать ключ -m32, хотя тут, опять же, проще или полноценной 32-х-битной chroot-средой воспользоваться или виртуалкой.
Записан
vanessa
Гость
« Ответ #2 : Апрель 20, 2011, 20:28 »

Я этот вопрос задал потому как сейчас на распутье: мигрировать на amd64 или нет? сдерживает миграцию тот прискорбный факт что иногда(часто) приходится работать на ноутбуке, который не умеет amd64....  ну а обратная сборка - чисто ради спортивного интереса....
Записан
Fat-Zer
Гость
« Ответ #3 : Апрель 20, 2011, 20:55 »

у меня тоже на основном x86_64, а на нетбуке x86... и я не вижу в чём может быть проблемма...
Записан
vanessa
Гость
« Ответ #4 : Апрель 20, 2011, 21:18 »

Расскажите как на нетбуке собирать программы для amd64? что для этого нужно ?
Записан
Fat-Zer
Гость
« Ответ #5 : Апрель 20, 2011, 21:32 »

Расскажите как на нетбуке собирать программы для amd64? что для этого нужно ?
о_О зачем?
я правда на основном компе собираю систему(gentoo) для нетбука, ибо на этом чуде этот процесс займёт века...
Записан
vanessa
Гость
« Ответ #6 : Апрель 20, 2011, 22:12 »

о_О зачем?
бивает езжу по командировкам и иногда приходится исправлять свои поделки. а поделки мои - это что-то типа ембедеда, только на обычних компах. Вот и хочется эти компы тоже перевести на amd64 но при этом не устанавливать туда средства сборки. соответственно надо будет собирать на х68 программы для x86_64
Записан
Fat-Zer
Гость
« Ответ #7 : Апрель 20, 2011, 22:35 »

эх... мне, благо, таким извращением заниматься не приходилось... но пилить надо в сторону кросс-компиляции...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Апрель 21, 2011, 07:31 »

Я так и не смог победить кросскомпиляцию из 64 для 32. Грустный Копай в сторону emerge crossdev. Если победишь - поделись.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
vanessa
Гость
« Ответ #9 : Март 23, 2012, 00:14 »

подтиму тему: в свежем дебиане есть мультиарч суппорт - ставятся заголовки и библиотеки для кроскомпияции для цели amd64 на хоcте i386. добавление в .pro-файл строк
Код:
QMAKE_CXXFLAGS_RELEASE += -m64
QMAKE_LFLAGS_RELEASE += -m64
сделало возможным компиляцию cpp-файлов, но только компиляцию, на этапе линковки получаю ошибки
Код:
g++ -Wl,-O1 -m64 -o qttest64 main.o    -L/usr/lib -lQtGui -lQtCore -lpthread 
/usr/bin/ld: skipping incompatible /usr/lib/libQtGui.so when searching for -lQtGui
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.6/../../../libQtGui.so when searching for -lQtGui
/usr/bin/ld: skipping incompatible /usr/lib/libQtGui.so when searching for -lQtGui
/usr/bin/ld: cannot find -lQtGui
/usr/bin/ld: skipping incompatible /usr/lib/libQtCore.so when searching for -lQtCore
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.6/../../../libQtCore.so when searching for -lQtCore
/usr/bin/ld: skipping incompatible /usr/lib/libQtCore.so when searching for -lQtCore
/usr/bin/ld: cannot find -lQtCore
collect2: ld returned 1 exit status
make: *** [qttest64] Помилка 1
что вообщем-то нормально поскольку в /usr/lib у меня библиотеки для архитектуры i386. Есть мысль установить эти библиотеки из пакетов для amd64 но вот как бы их по-правильному установить, чтоб не сильно манипулировать файлами вручную и чтоб пакетный менеджер дебиана не затер родные для архитектуры библиотеки ?

еще сделал так, распаковал amd64 библиотеки Qt в /opt/lib64 из пакетов вручную, дописал в .pro-файл
Код:
QMAKE_LIBDIR_QT = /opt/lib64
команда линковки, генерируемая qmake теперь выглядит так
Код:
g++ -Wl,-O1 -m64 -o qttest64 main.o    -L/opt/lib64 -lQtGui -lQtCore -lpthread 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.6/../../../libQtGui.so when searching for -lQtGui
/usr/bin/ld: skipping incompatible /usr/lib/libQtGui.so when searching for -lQtGui
/usr/bin/ld: cannot find -lQtGui
/usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.6/../../../libQtCore.so when searching for -lQtCore
/usr/bin/ld: skipping incompatible /usr/lib/libQtCore.so when searching for -lQtCore
/usr/bin/ld: cannot find -lQtCore
collect2: ld returned 1 exit status
make: *** [qttest64] Помилка 1
а почему оно все-равно исчет библиотеки в /usr/lib если параметр -L задан на совсем другой путь ?


« Последнее редактирование: Март 23, 2012, 00:32 от vanessa » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.06 секунд. Запросов: 22.