Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: кроссплатформенная компиляция  (Прочитано 22104 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 28-09-2009 14:28 » new

Как в дебиане через g++ скомпилировать .exe, который запустится из под win32 ( xp sp2) ?

... +4h

Что-то не понял, где проблема, 4 часа искал документацию, прочитал гору всякой информации, в итоге ничего так и не понял ... плюнул на все, набрал:

apt-get install mingw32
i586-mingw32msvc-g++ имя_первого_попавшегося_исходника_с_майн

Тут же получил a.exe, перенес его на хост xp и запустил:
Все почему-то работает, единственное, что смущает - так не бывает, никогда так не бывало и не бывает.

P.S. ну разве что файл *.exe более 1 метра, при том же ельфе в 39 кб

...

До сих пор не мог поверить, что не потребовалось копировать dll для запуска, проверил depends.exe: оказалось слинкована с kernel32 msvcrt, ну и через них тянет ntdll

P.P.S. попробую сейчас посмотреть, что там так много места занимает.
« Последнее редактирование: 14-12-2009 07:03 от Sel » Записан

1n c0de we trust
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 29-09-2009 06:48 » 

единственное что смущает - так не бывает, ну сто-пятьсот, никогда так не бывало и не бывает

да программисты очень любят создавать себе проблемы Улыбаюсь без этого никак и отсутствие проблем вводит их в ступор
Записан

Странно всё это....
Вад
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 29-09-2009 07:30 » 

попробую сейчас посмотреть, что там так много места занимает
Надо думать, CRT и иже с ним. Это в Linux оно лежит отдельно в lib.
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #3 : 29-09-2009 14:27 » 

странно думал что, crt прога из msvcrt тянет
% 40 это явно какие-то данные, а не код, признаться я уже забыл как пользоваться дизассемблером ...

кто-нибудь в курсе, какие виндовые дизассемблеры щас в моде ( желательно из бесплатных) ?
Записан

1n c0de we trust
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 29-09-2009 15:26 » 

Mayor, не в обиду. Тебе дизассемблер, как обезьяне микроскоп. Улыбаюсь
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #5 : 06-12-2009 07:25 » 

Mayor, не в обиду. Тебе дизассемблер, как обезьяне микроскоп. Улыбаюсь

какие ты сложности видишь в использовании дизассемблера?

итак консольные приложения компилируются на ура, более сложная вводная:

нужно из под линукса скомпилировать под винду opengl приложение с использованием glut, под линухом оно уже работает на ура, при попытке кросс компиляции выдает до кучи undefined reference

соотвественно вопросы: где в линухе хранятся описание таблиц экспорта win32 dll?
как добавить туда данные?
Записан

1n c0de we trust
Mayor
Специалист

ru
Offline Offline

« Ответ #6 : 08-12-2009 08:08 » 

описание таблиц экспорта win32 dll храниться в папке lib, кроссплатформенного tool-chain, проще говоря: /usr/i586-mingw32msvc/lib, как показала практика новые библиотеки можно добавлять туда же безо всякой переконфигурации линкера

хм, тк ни здесь, на на каком либо другом форуме, ни в гугле, ни даже в рсдн не нашлось ответа на мой, впрочем не совсем верно поставленный вопрос, я начал от безнадежности компосировать мозги\общасться с одним из авторов или портеров ( я так и не понял ) библиотеки freeglut, как оказалось: основная проблема возникла из-за отсутствия опыта линковки lib*.a и недопонимания вот этого параметра линкера:

Цитата
-larchive
       --library=archive
      Add archive file archive to the list of files to link.  This option
      may   be used any number of times.  ld will search its path-list for
      occurrences of "libarchive.a" for every archive specified.

      On systems which support shared libraries, ld may also  search  for
      libraries  with  extensions   other than ".a".  Specifically, on ELF
      and SunOS systems, ld will search a directory for a library with an
      extension  of  ".so"  before searching for one with an extension of
      ".a".  By convention, a ".so" extension indicates a shared library.

      The   linker will search an archive only once, at the location where
      it is specified on the command line.  If the archive defines a sym-
      bol   which  was  undefined in some object which appeared before the
      archive on the command line, the linker will include the  appropri-
      ate   file(s)  from the archive.  However, an undefined symbol in an
      object appearing later on the  command  line  will  not  cause  the
      linker to search the archive again.

      See   the -( option for a way to force the linker to search archives
      multiple times.

      You may list the same archive multiple times on the command line.

      This type of archive searching is standard for Unix linkers.   How-
      ever,  if  you  are using ld on AIX, note that it is different from
      the behaviour of the AIX linker.

после внесения изменений в Makefile все заработало

Код:
deps Simple.cpp
i586-mingw32msvc-g++   -O2 -Wall -Wextra --pedantic    -M -MP -MQ Simple.d -MQ Simple.o -o Simple.d Simple.cpp
g++ Simple.cpp
i586-mingw32msvc-g++   -O2 -Wall -Wextra --pedantic    -c -o Simple.o Simple.cpp
Simple.cpp:72: warning: unused parameter ‘state’
Simple.cpp:72: warning: unused parameter ‘x’
Simple.cpp:72: warning: unused parameter ‘y’
Simple.cpp:94: warning: unused parameter ‘x’
Simple.cpp:94: warning: unused parameter ‘y’
linking test.exe
i586-mingw32msvc-g++   -o test.exe Simple.o  -lfreeglut -lopengl32 -lglu32

как ни странно, кроссскомпиленная версия екзешника оказалась всего 30кб вместо 45кб, получившихся при использовании win32 mingw
Записан

1n c0de we trust
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines