Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компилирование 64битного модуля на 32битной машине 
V
    Опции темы
nerezus
  Дата 1.10.2009, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Сабж, у меня 32битный ноут, а надо собрать 64битный модуль для PHP.

Как это сделать?

P.S. Модуль писал сам, если что.
P.P.S. ./configure --target=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu не помогло.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nickless
Дата 1.10.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Ну для начала тебе надо кросс-компилятор, т.к. 32-битные версии gcc по дефолту не поддерживают ничего другого.

Цитата(nerezus @  1.10.2009,  16:03 Найти цитируемый пост)
--target=x86_64-pc-linux-gnu

Если нет такой версии примерно в /usr/x86_64-pc-linux-gnu/gcc-bin/*/gcc то бесполезно пробовать.

Может быстрее будет поставить 64-битный дистр в виртуалке?


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
nerezus
Дата 1.10.2009, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Цитата

Может быстрее будет поставить 64-битный дистр в виртуалке?
 Нееее....

Так, как поставить кросскомпилятор под 64бита?)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nickless
Дата 1.10.2009, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(nerezus @  1.10.2009,  18:00 Найти цитируемый пост)
Так, как поставить кросскомпилятор под 64бита?) 

Если нет такого пакета (поищи что-нибудь с "cross") под твой дистр, то разве что скомпилировать (минимум час уйдёт).


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
nerezus
Дата 1.10.2009, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Дистр - последняя убунта.
Код

nerezus@localhost:~/build/php-5.2.11/ext/ico$ sudo apt-cache search cross | grep gcc
gcc-avr - The GNU C compiler (cross compiler for avr)
gcc-h8300-hms - The GNU C compiler (cross compiler for h8300-hitachi-coff)
gcc-m68hc1x - GNU C compiler for the Motorola 68HC11/12 processors
spu-gcc - SPU cross-compiler (preprocessor and C compiler)


Итак, как собирать?)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
powerfox
Дата 2.10.2009, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



nerezus, 
Цитата(nerezus @  1.10.2009,  23:09 Найти цитируемый пост)
Итак, как собирать?) 

Придётся собрать gcc и libc. Не знаю, что необходимо для твоих модулей, но могут потребоваться и другие кросс-библиотеки.

nickless тебе правильно предложил поставить 64-битный дистр — меньше проблем и быстрее.


--------------------
user posted image
PM WWW   Вверх
nerezus
  Дата 2.10.2009, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Цитата

nickless тебе правильно предложил поставить 64-битный дистр — меньше проблем и быстрее.
 Хех, качаю (


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nerezus
Дата 2.10.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Собрал на виртуалке. Удивлен, что размер файла 26кб вместо 32 вышел.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nickless
Дата 3.10.2009, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(nerezus @  2.10.2009,  10:19 Найти цитируемый пост)
Удивлен, что размер файла 26кб вместо 32 вышел. 

32 был 32-битный с теми же флагами?


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
nerezus
Дата 5.10.2009, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



nickless, никаких флагов, все дефолтное было.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
nickless
Дата 5.10.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Мне просто интересно с чего ты взял, что размер должен быть 32k


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
nerezus
Дата 5.10.2009, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



nickless, ну на 32битной было 32кб. Я думал, что на 64битной будет больше.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
powerfox
Дата 5.10.2009, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



Цитата(nerezus @  5.10.2009,  21:54 Найти цитируемый пост)
nickless, ну на 32битной было 32кб. Я думал, что на 64битной будет больше. 

Так и должно быть, проверь флаги.


--------------------
user posted image
PM WWW   Вверх
nickless
Дата 7.10.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(powerfox @  5.10.2009,  22:15 Найти цитируемый пост)
Так и должно быть

Ну совсем не обязательно, 64 битный код вполне может быть короче, а данных в исполняемом файле много не хранится.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
powerfox
Дата 7.10.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



Цитата(nickless @  7.10.2009,  19:41 Найти цитируемый пост)
Ну совсем не обязательно, 64 битный код вполне может быть короче, а данных в исполняемом файле много не хранится. 

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


--------------------
user posted image
PM WWW   Вверх
nickless
Дата 9.10.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Цитата(powerfox @  7.10.2009,  20:30 Найти цитируемый пост)
А как 64-битный код может быть короче (за исключением перехода на аппаратную 64-битную арифметику вместо программной)?

64 битная арифметика может сильно уменьшить размер кода, если часто используется, ну и кроме того компилятору не нужно заботиться о совместимости с i386, он может спокойно использовать всё что угодно вплоть до sse2.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
powerfox
Дата 9.10.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



Цитата(nickless @  9.10.2009,  16:17 Найти цитируемый пост)
ну и кроме того компилятору не нужно заботиться о совместимости с i386, он может спокойно использовать всё что угодно вплоть до sse2.

Ну, не знаю. SSE2 (в отличие от SSSE3/SSE4) есть и на 32-х битных машинах, а такие программы, как mplayer, которые юзают мультимедиа, обычно проверяют во время конфигурации наличие SSEx. Мне кажется, что если не арифметика, то причина в чём-то другом.


--------------------
user posted image
PM WWW   Вверх
Void
Дата 9.10.2009, 15:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 7
Всего: 173



Может быть меньше кода на register spilling, прологи/эпилоги функций. В общем, случай редкий, но отнюдь не невозможный.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nerezus
Дата 9.10.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 1
Всего: 43



Я могу оба файла выложить то ) Правда я в Турции, тут с инетом траблы, так что IDA я сам скачать не смогу.

Добавлено через 1 минуту и 41 секунду
http://www.sendspace.com/file/9li7zx


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
powerfox
Дата 11.10.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 26
Всего: 97



Цитата(Void @  9.10.2009,  16:52 Найти цитируемый пост)
Может быть меньше кода на register spilling, прологи/эпилоги функций.

Хорошее объяснение.


--------------------
user posted image
PM WWW   Вверх
nickless
Дата 11.10.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 41
Всего: 181



Т.к. это либа, то еще и более эффективный PIC влияет.
Для сравнения:
Код

 х86                                                            | х86-64
 00000850 <zif_extract_ico>:                                    | 0000000000000710 <zif_extract_ico>:
 0x00: push  %ebp                             57                | 0x00: push   %rbx                             53
       mov   %esp,%ebp                        89 e5             |       mov    %rsi,%rbx                        48 89 f3
       push  %ebx                             53                |       lea    0x8b(%rip),%rsi                  48 8d 35 8b 00 00 00
       call  827 <__i686.get_pc_thunk.bx>     e8 ce ff ff ff    |
       add   $0x179b,%ebx                     81 c3 9b 17 00 00 |       xor    %eax,%eax                        31 c0
       sub   $0x34,%esp                       83 ec 34          |       sub    $0x20,%rsp                       48 83 ec 20
       lea   -0x14(%ebp),%eax                 8d 45 ec          |       lea    0x1c(%rsp),%rcx                  48 8d 4c 24 1c
       mov   %eax,0x14(%esp)                  89 44 24 14       |
       lea   -0xc(%ebp),%eax                  8d 45 f4          |       lea    0x10(%rsp),%rdx                  48 8d 54 24 10
       mov   %eax,0x10(%esp)                  89 44 24 10       |
       lea   -0x10(%ebp),%eax                 8d 45 f0          |       lea    0x18(%rsp),%r9                   4c 8d 4c 24 18
       mov   %eax,0xc(%esp)                   89 44 24 0c       |
       lea   -0x8(%ebp),%eax                  8d 45 f8          |       lea    0x8(%rsp),%r8                    4c 8d 44 24 08
       mov   %eax,0x8(%esp)                   89 44 24 08       |
       lea   -0x12d0(%ebx),%eax               8d 83 30 ed ff ff |
       mov   %eax,0x4(%esp)                   89 44 24 04       |
       mov   0x8(%ebp),%eax                   8b 45 08          |
       mov   %eax,(%esp)                      89 04 24          |
       call  734 <zend_parse_parameters@plt>  e8 a1 fe ff ff    |       callq  608 <zend_parse_parameters@plt>  e8 ce fe ff ff
       test  %eax,%eax                        85 c0             |       test   %eax,%eax                        85 c0
       jne   8b0 <zif_extract_ico+0x60>       75 19             |       jne    751 <zif_extract_ico+0x41>       75 13
       mov   -0xc(%ebp),%eax                  8b 45 f4          |       mov    0x8(%rsp),%rsi                   48 8b 74 24 08
       mov   %eax,0x4(%esp)                   89 44 24 04       |
       mov   -0x8(%ebp),%eax                  8b 45 f8          |       mov    0x10(%rsp),%rdi                  48 8b 7c 24 10
       mov   %eax,(%esp)                      89 04 24          |
       call  664 <_extract_ico@plt>           e8 bb fd ff ff    |       callq  5e8 <_extract_ico@plt>           e8 9b fe ff ff
       mov   0xc(%ebp),%eax                   8b 45 0c          |
       movb  $0x0,0xc(%eax)                   c6 40 0c 00       |       movb   $0x0,0x14(%rbx)                  c6 43 14 00
       add   $0x34,%esp                       83 c4 34          |       add    $0x20,%rsp                       48 83 c4 20
       pop   %ebx                             5b                |       pop    %rbx                             5b
       pop   %ebp                             5d                |
 0x65: ret                                    c3                | 0x46: retq                                    c3
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                |       nop                                     90
                                                                | 0x4f: nop                                     90



--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0708 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.