Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сборка Linux исходников под Windows для тестирования а в последствии для ARM для работы
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
west329_
Задача стоит в том, чтоб программа заработала на АРМ контроллере, на котором работает Linux. При этом хочу использовать платформу обычных недорогих роутеров типа ASUS или Dlink? на них как я понял уже стоит линукс, нужно только докинуть исполнямый файл в прошивку.

Но это только в планах, саму программу пока нужно подкорректировать, тестировать нужно в Windows.
Для сборки в EXE файл линукс исходников используют популярую Cygwin.

Скачал Cygwin, установил проект с пакетами GCC, размер около 40мб.

Запустил, зашол в папку с исходниками где находятся файл Makefile, при попытке компиляции программы :

$ gcc make
gcc: make: No such file or directory
gcc: no input files

при том , что в чистом линуксе проект собирается без всяких проблем.

Подскажите в чем может проблемма ?
С ув.
MrYuran
вам же русским языком написали:
Цитата
make: No such file or directory

не может найти make
Цитата
gcc: no input files

естественно, компилеру нечего делать, кроме как закончить работу.

Либо запускайте из той же папки, где make лежит, либо прописывайте полный путь
Цитата
Запустил, зашол в папку с исходниками где находятся файл Makefile

Вообще-то, make и Makefile это несколько разные вещи с т.з. компутера
west329_
Попробовал найти найти файл Make.exe в папках Cygwin, чтото его не наблюдаю, попробую переустановить Cygwin, может не всё стало
andrew_b
Цитата(west329_ @ May 22 2008, 09:18) *
$ gcc make
Подскажите в чем может проблемма ?
В том, что вы дали странную команду.
west329_
Цитата(andrew_b @ May 22 2008, 09:55) *
В том, что вы дали странную команду.

Странно в линуксе проходит
MrYuran
а если просто запустить make?
просто: make<Enter>
а ещё так: gcc -h
и посмотреть, что там должно быть
west329_
Цитата(MrYuran @ May 22 2008, 10:34) *
а если просто запустить make?
просто: make<Enter>
а ещё так: gcc -h
и посмотреть, что там должно быть

Код
$ make
c:\WinAVR-20071221\utils\bin\make: invalid option -- O
c:\WinAVR-20071221\utils\bin\make: invalid option -- _
Usage: make [options] [target] ...
Options:
  -b, -m                      Ignored for compatibility.
  -B, --always-make           Unconditionally make all targets.
  -C DIRECTORY, --directory=DIRECTORY
                              Change to DIRECTORY before doing anything.
  -d                          Print lots of debugging information.
  --debug[=FLAGS]             Print various types of debugging information.
  -e, --environment-overrides
                              Environment variables override makefiles.
  -f FILE, --file=FILE, --makefile=FILE
                              Read FILE as a makefile.
  -h, --help                  Print this message and exit.
  -i, --ignore-errors         Ignore errors from commands.
  -I DIRECTORY, --include-dir=DIRECTORY
                              Search DIRECTORY for included makefiles.
  -j [N], --jobs[=N]          Allow N jobs at once; infinite jobs with no arg.
  -k, --keep-going            Keep going when some targets can't be made.
  -l [N], --load-average[=N], --max-load[=N]
                              Don't start multiple jobs unless load is below N.
  -L, --check-symlink-times   Use the latest mtime between symlinks and target.
  -n, --just-print, --dry-run, --recon
                              Don't actually run any commands; just print them.
  -o FILE, --old-file=FILE, --assume-old=FILE
                              Consider FILE to be very old and don't remake it.
  -p, --print-data-base       Print make's internal database.
  -q, --question              Run no commands; exit status says if up to date.
  -r, --no-builtin-rules      Disable the built-in implicit rules.
  -R, --no-builtin-variables  Disable the built-in variable settings.
  -s, --silent, --quiet       Don't echo commands.
  -S, --no-keep-going, --stop
                              Turns off -k.
  -t, --touch                 Touch targets instead of remaking them.
  -v, --version               Print the version number of make and exit.
  -w, --print-directory       Print the current directory.
  --no-print-directory        Turn off -w, even if it was turned on implicitly.
  -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
                              Consider FILE to be infinitely new.
  --warn-undefined-variables  Warn when an undefined variable is referenced.

This program built for i386-pc-mingw32
Report bugs to <bug-make@gnu.org>


только непойму причем тут WinAVR-20071221, неужели он пытается make от WinAVR использовать
COMA
Цитата
Задача стоит в том, чтоб программа заработала на АРМ контроллере, на котором работает Linux. При этом хочу использовать платформу обычных недорогих роутеров типа ASUS или Dlink? на них как я понял уже стоит линукс, нужно только докинуть исполнямый файл в прошивку.


Не думаю что так просто. Много моментов которые надо учесть.
MrYuran
Цитата
на них как я понял уже стоит линукс, нужно только докинуть исполнямый файл в прошивку

ниже привожу график энтузиазма при реализации данной идеи (наблюдал лично)
Нажмите для просмотра прикрепленного файла
smile.gif
Цитата
в чистом линуксе проект собирается без всяких проблем

а чего ж тогда там-то не работается?
andrew_b
Цитата(west329_ @ May 22 2008, 10:19) *
Цитата(andrew_b @ May 22 2008, 09:55) *
В том, что вы дали странную команду.

Странно в линуксе проходит
Не верю.
Код
$ ls M*      
Makefile
$ gcc make
i586-alt-linux-gcc: make: Нет такого файла или каталога
i586-alt-linux-gcc: не заданы входные файлы
$
west329_
Цитата(andrew_b @ May 22 2008, 12:28) *
Странно в линуксе проходит Не верю.
Код
$ ls M*      
Makefile
$ gcc make
i586-alt-linux-gcc: make: Нет такого файла или каталога
i586-alt-linux-gcc: не заданы входные файлы
$



Немного расставлю точки. Я не большой профи в линуксе и в cpp но так буквально
все воспринемать не надо, Этот проект собирается на линуксе 100%, я лично собирал без сучка
и задоринки, дистрибудив Mandriva 2007 free, установленны по умалчанию, из под командной
строки в терминале под root, находясь в папке с исходниками проекта, набираю команду make,
и все нормально компилится . Никаких дополнительных пакетов и компиляторов я не ставил.

Потом мне этот проект попался с расширением EXE и с библиотекой cygwin1.dll, он прекрасно
работал под Windows? функционал при этом не поменялся, так как программа написана простая.
Вот и решил повторить подобное.

Цитата(COMA @ May 22 2008, 10:58) *
Не думаю что так просто. Много моментов которые надо учесть.


Согласен, и не занимался этим бы еслиб не увидел все в живых рабочих экземплярах.

Нашол пару дырок.
Оказывается Cygwin не установил команду make, а нашол на компьютере установленный WinAvr и
и с его make начал собирать.

Доставил родной make в CYGVIN.
Тепер без всяких GCC make, а просто make начинает собиратся проект но не полностью.
Вот что получается.
Код
$ make
-----------------------------------------------------
Build for platform i386-pc-linux
-----------------------------------------------------
make -C cscrypt
gcc -O2 -DOS_LINUX  -c md5.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a md5.o
ar: creating ../lib/libcscrypt-i386-pc-linux.a
a - md5.o
gcc -O2 -DOS_LINUX  -c crc32.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a crc32.o
a - crc32.o
gcc -O2 -DOS_LINUX  -c aes_core.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a aes_core.o
a - aes_core.o
gcc -O2 -DOS_LINUX  -c des.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a des.o
a - des.o
gcc -O2 -DOS_LINUX  -c bn_add.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_add.o
a - bn_add.o
gcc -O2 -DOS_LINUX  -c bn_asm.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_asm.o
a - bn_asm.o
gcc -O2 -DOS_LINUX  -c bn_ctx.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_ctx.o
a - bn_ctx.o
gcc -O2 -DOS_LINUX  -c bn_div.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_div.o
a - bn_div.o
gcc -O2 -DOS_LINUX  -c bn_exp.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_exp.o
a - bn_exp.o
gcc -O2 -DOS_LINUX  -c bn_lib.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_lib.o
a - bn_lib.o
gcc -O2 -DOS_LINUX  -c bn_mul.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_mul.o
a - bn_mul.o
gcc -O2 -DOS_LINUX  -c bn_print.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_print.o
a - bn_print.o
gcc -O2 -DOS_LINUX  -c bn_shift.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_shift.o
a - bn_shift.o
gcc -O2 -DOS_LINUX  -c bn_sqr.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_sqr.o
a - bn_sqr.o
gcc -O2 -DOS_LINUX  -c bn_word.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a bn_word.o
a - bn_word.o
gcc -O2 -DOS_LINUX  -c mem.c
ar -rvsl ../lib/libcscrypt-i386-pc-linux.a mem.o
a - mem.o
make -C csctapi
gcc -O2 -DOS_LINUX  -c apdu.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a apdu.o
ar: creating ../lib/libcsctapi-i386-pc-linux.a
a - apdu.o
gcc -O2 -DOS_LINUX  -c atr.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a atr.o
a - atr.o
gcc -O2 -DOS_LINUX  -c cardterminal.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a cardterminal.o
a - cardterminal.o
gcc -O2 -DOS_LINUX  -c ct_list.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a ct_list.o
a - ct_list.o
gcc -O2 -DOS_LINUX  -c ct_slot.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a ct_slot.o
a - ct_slot.o
gcc -O2 -DOS_LINUX  -c ctapi.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a ctapi.o
a - ctapi.o
gcc -O2 -DOS_LINUX  -c icc_async.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a icc_async.o
a - icc_async.o
gcc -O2 -DOS_LINUX  -c ifd_towitoko.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a ifd_towitoko.o
a - ifd_towitoko.o
gcc -O2 -DOS_LINUX  -c io_serial.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a io_serial.o
a - io_serial.o
gcc -O2 -DOS_LINUX  -c pps.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a pps.o
a - pps.o
gcc -O2 -DOS_LINUX  -c protocol_t0.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a protocol_t0.o
a - protocol_t0.o
gcc -O2 -DOS_LINUX  -c protocol_t1.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a protocol_t1.o
a - protocol_t1.o
gcc -O2 -DOS_LINUX  -c t1_block.c
ar -rvsl ../lib/libcsctapi-i386-pc-linux.a t1_block.o
a - t1_block.o
gcc -O2 -DOS_LINUX  -c -Icsctapi mpcs-simples.c
In file included from mpcs-simples.c:1:
globals.h:190: error: parse error before "ulong"
globals.h:190: warning: no semicolon at end of struct or union
globals.h:193: error: parse error before '}' token
globals.h:193: warning: `packed' attribute ignored
globals.h:200: error: parse error before "ulong"
globals.h:200: warning: no semicolon at end of struct or union
globals.h:201: warning: `packed' attribute ignored
globals.h:206: error: parse error before "FILTER"
globals.h:206: warning: no semicolon at end of struct or union
globals.h:207: warning: `packed' attribute ignored
globals.h:213: error: parse error before "FTAB"
globals.h:213: warning: no semicolon at end of struct or union
globals.h:214: warning: `packed' attribute ignored
globals.h:219: error: parse error before "PORT"
globals.h:219: warning: no semicolon at end of struct or union
globals.h:220: warning: `packed' attribute ignored
globals.h:227: error: parse error before "ulong"
globals.h:227: warning: no semicolon at end of struct or union
globals.h:228: warning: data definition has no type or storage class
globals.h:259: error: parse error before "PTAB"
globals.h:259: warning: no semicolon at end of struct or union
globals.h:280: error: parse error before "ulong"
globals.h:280: warning: no semicolon at end of struct or union
globals.h:282: error: 'dup' redeclared as different kind of symbol
/usr/include/sys/unistd.h:35: error: previous declaration of 'dup' was here
globals.h:282: error: 'dup' redeclared as different kind of symbol
/usr/include/sys/unistd.h:35: error: previous declaration of 'dup' was here
globals.h:287: error: parse error before "sidtabok"
globals.h:287: warning: data definition has no type or storage class
globals.h:288: error: parse error before "sidtabno"
globals.h:288: warning: data definition has no type or storage class
globals.h:291: error: 'stat' redeclared as different kind of symbol
/usr/include/sys/stat.h:124: error: previous declaration of 'stat' was here
globals.h:291: error: 'stat' redeclared as different kind of symbol
/usr/include/sys/stat.h:124: error: previous declaration of 'stat' was here
globals.h:300: warning: built-in function 'log' declared as non-function
globals.h:306: error: parse error before "pcrc"
globals.h:306: warning: data definition has no type or storage class
globals.h:317: error: parse error before "fchid"
globals.h:317: warning: data definition has no type or storage class
globals.h:318: error: parse error before "ftab"
globals.h:318: warning: data definition has no type or storage class
globals.h:320: error: parse error before '}' token
globals.h:326: error: parse error before "ulong"
globals.h:326: warning: no semicolon at end of struct or union
globals.h:340: error: parse error before "sidtabok"
globals.h:340: warning: data definition has no type or storage class
globals.h:341: error: parse error before "sidtabno"
globals.h:341: warning: data definition has no type or storage class
globals.h:368: error: parse error before "fchid"
globals.h:368: warning: data definition has no type or storage class
globals.h:369: error: parse error before "ftab"
globals.h:369: warning: data definition has no type or storage class
globals.h:382: error: parse error before '}' token
globals.h:399: error: parse error before "ulong"
globals.h:399: warning: no semicolon at end of struct or union
globals.h:403: error: conflicting types for 'next'
globals.h:192: error: previous declaration of 'next' was here
globals.h:404: error: parse error before '}' token
globals.h:414: error: parse error before "ulong"
globals.h:414: warning: no semicolon at end of struct or union
globals.h:417: error: parse error before "sidtabok"
globals.h:417: warning: data definition has no type or storage class
globals.h:418: error: parse error before "sidtabno"
globals.h:418: warning: data definition has no type or storage class
globals.h:419: error: parse error before "fchid"
globals.h:419: warning: data definition has no type or storage class
globals.h:420: error: parse error before "ftab"
globals.h:420: warning: data definition has no type or storage class
globals.h:423: error: conflicting types for 'ac_idx'
globals.h:313: error: previous declaration of 'ac_idx' was here
globals.h:430: error: conflicting types for 'next'
globals.h:403: error: previous declaration of 'next' was here
globals.h:430: error: conflicting types for 'next'
globals.h:403: error: previous declaration of 'next' was here
globals.h:431: error: parse error before '}' token
globals.h:449: error: parse error before "ulong"
globals.h:449: warning: no semicolon at end of struct or union
globals.h:453: error: parse error before "delay"
globals.h:453: warning: data definition has no type or storage class
globals.h:461: error: conflicting types for 'srvid'
globals.h:191: error: previous declaration of 'srvid' was here
globals.h:477: error: parse error before "c35_tcp_ptab"
globals.h:477: warning: data definition has no type or storage class
globals.h:479: error: parse error before "ncd_ptab"
globals.h:479: warning: data definition has no type or storage class
globals.h:490: error: conflicting types for 'gbox_pwd'
globals.h:371: error: previous declaration of 'gbox_pwd' was here
globals.h:503: error: conflicting types for 'ac_penalty'
globals.h:425: error: previous declaration of 'ac_penalty' was here
globals.h:510: error: parse error before '}' token
globals.h:526: error: parse error before "ulong"
globals.h:526: warning: no semicolon at end of struct or union
globals.h:541: error: parse error before '}' token
globals.h:541: warning: `packed' attribute ignored
globals.h:560: error: parse error before "cs_atoi"
globals.h:560: warning: data definition has no type or storage class
globals.h:570: error: parse error before "b2i"
globals.h:570: warning: data definition has no type or storage class
globals.h:572: error: parse error before "ulong"
globals.h:573: error: parse error before "a2i"
globals.h:573: warning: data definition has no type or storage class
globals.h:590: error: conflicting types for 'reader'
globals.h:527: error: previous declaration of 'reader' was here
globals.h:599: error: conflicting types for 'ph'
globals.h:354: error: previous declaration of 'ph' was here
globals.h:600: error: parse error before '*' token
globals.h:600: warning: data definition has no type or storage class
globals.h:614: error: parse error before '*' token
globals.h:620: error: parse error before '*' token
globals.h:623: error: parse error before "ECM_REQUEST"
globals.h:624: error: parse error before "ECM_REQUEST"
globals.h:626: error: parse error before "chk_provid"
globals.h:626: warning: data definition has no type or storage class
globals.h:627: error: parse error before '*' token
globals.h:628: error: parse error before '*' token
globals.h:629: error: parse error before '*' token
globals.h:631: error: parse error before '*' token
globals.h:631: warning: data definition has no type or storage class
globals.h:632: error: parse error before '*' token
globals.h:633: error: parse error before '*' token
globals.h:635: error: parse error before '*' token
globals.h:636: error: parse error before '*' token
globals.h:637: error: parse error before '*' token
globals.h:638: error: parse error before '*' token
globals.h:639: error: parse error before '*' token
globals.h:640: error: parse error before '*' token
globals.h:651: error: parse error before '*' token
globals.h:655: error: parse error before '*' token
globals.h:663: error: parse error before "ulong"
globals.h:693: error: parse error before '*' token
globals.h:698: error: parse error before '*' token
globals.h:704: error: parse error before '*' token
globals.h:710: error: parse error before '*' token
globals.h:716: error: parse error before '*' token
mpcs-simples.c:3: error: static declaration of 'aeskey' follows non-static decla
ration
globals.h:307: error: previous declaration of 'aeskey' was here
mpcs-simples.c: In function `aes_set_key':
mpcs-simples.c:8: error: invalid use of undefined type `struct s_client'
mpcs-simples.c:8: error: dereferencing pointer to incomplete type
mpcs-simples.c: In function `aes_encrypt_idx':
mpcs-simples.c:22: error: invalid use of undefined type `struct s_client'
mpcs-simples.c:22: error: dereferencing pointer to incomplete type
mpcs-simples.c: At top level:
mpcs-simples.c:84: error: parse error before "cs_atoi"
mpcs-simples.c: In function `cs_atoi':
mpcs-simples.c:87: error: `ulong' undeclared (first use in this function)
mpcs-simples.c:87: error: (Each undeclared identifier is reported only once
mpcs-simples.c:87: error: for each function it appears in.)
mpcs-simples.c:87: error: parse error before "rc"
mpcs-simples.c: At top level:
mpcs-simples.c:223: error: parse error before "b2i"
mpcs-simples.c:245: error: parse error before "ulong"
mpcs-simples.c: In function `i2b':
mpcs-simples.c:248: error: `n' undeclared (first use in this function)
mpcs-simples.c:251: error: `i' undeclared (first use in this function)
mpcs-simples.c: At top level:
mpcs-simples.c:268: error: parse error before "a2i"
mpcs-simples.c: In function `a2i':
mpcs-simples.c:271: error: `ulong' undeclared (first use in this function)
mpcs-simples.c:271: error: parse error before "rc"
mpcs-simples.c: At top level:
globals.h:354: error: storage size of `ph' isn't known
make[1]: *** [lib/libcs-i386-pc-linux.a(mpcs-simples.o)] Error 1
make: [i386-pc-linux] Error 2 (ignored)



Странно всё както, все шло нормально а потом бац
MrYuran
чё странного-то, ищите ошибки.
файл и строка указаны.
вперёд.
andrew_b
Цитата(west329_ @ May 22 2008, 13:48) *
но так буквально
все воспринемать не надо
Ну извините, я не телепат, чтобы вот тут воспринимать, а вот тут нет.

И если вы собираете под Cygwin, то почему
Цитата
Build for platform i386-pc-linux
dENIM
Цитата(west329_ @ May 22 2008, 09:18) *
Задача стоит в том, чтоб программа заработала на АРМ контроллере, на котором работает Linux. При этом хочу использовать платформу обычных недорогих роутеров типа ASUS или Dlink? на них как я понял уже стоит линукс, нужно только докинуть исполнямый файл в прошивку.


прошу прощения за оффтоп, но киньтесь в меня пожалуйста ссылкой по этому поводу.
west329_
Цитата(andrew_b @ May 22 2008, 14:33) *
Ну извините, я не телепат, чтобы вот тут воспринимать, а вот тут нет.

И если вы собираете под Cygwin, то почему


Сам немогу понять, вот принудительно прописал
Код
$ make win
-----------------------------------------------------
Build for platform i386-pc-cygwin
-----------------------------------------------------
make -C cscrypt
i686-pc-cygwin-gcc -O2 -DOS_CYGWIN32  -c md5.c
i686-pc-cygwin-ar -rvsl ../lib/libcscrypt-i386-pc-cygwin.a md5.o
make[2]: i686-pc-cygwin-ar: Command not found
make[2]: *** [../lib/libcscrypt-i386-pc-cygwin.a(md5.o)] Error 127
make[1]: *** [prepare] Error 2
make: [cross-i386-pc-cygwin] Error 2 (ignored)


Сразу вылетела 05.gif
MrYuran
Цитата(west329_ @ May 22 2008, 16:17) *
make[2]: i686-pc-cygwin-ar: Command not found

не может найти обработчик ассемблера. Пошукайте.
И линкер заодно посмотрите, чтоб 2 раза не бегать
AVR
Цитата(west329_ @ May 22 2008, 10:18) *
Но это только в планах, саму программу пока нужно подкорректировать, тестировать нужно в Windows.
Для сборки в EXE файл линукс исходников используют популярую Cygwin.
Ого... Какого рода эта программа что для её тестирования можно использовать cygwin? Не проще ли установить Linux в какой-нибудь виртуальной машине типа QEMU и тестировать что угодно без извращений в условиях "более родной окружающей среды"?..

В общем, учите матчасть smile.gif
Вот пара документиков, которые могут пригодиться (нравятся они мне):
http://free-electrons.com/training/devtools
http://free-electrons.com/training/drivers
и т.д. на http://free-electrons.com/training
ИМХО пользоваться готовой сборкой и добавлять что-то свое не лучший метод, возможно стоит пересобрать Linux под себя и засовывать его в интересующий роутер...
amw
Цитата(west329_ @ May 22 2008, 09:18) *
Задача стоит в том, чтоб программа заработала на АРМ контроллере, на котором работает Linux. При этом хочу использовать платформу обычных недорогих роутеров типа ASUS или Dlink? на них как я понял уже стоит линукс, нужно только докинуть исполнямый файл в прошивку.

Но это только в планах, саму программу пока нужно подкорректировать, тестировать нужно в Windows.
Для сборки в EXE файл линукс исходников используют популярую Cygwin.

1. Судя по Вашей формулировке Вы совершенно не представляете, что Вы хотите сделать.
Потому что:
1.1 АРМ контроллере
1.2 на котором работает Linux
1.3 Cygwin
Не понятно, каким образом программа собранная с помощью Cygwin будет работать на ARM контроллере под Linux.
Для того, чтоб программа работала на ARM контроллере, на котором Linux, нужно иметь кросс-компилятор. Будет он (кросс-компилятор) запускаться на Linux или из под Cygwin - не имеет значения.
Для того чтобы перекомпилить Linux-овую программу под Windows, используя Cygwin, нужно иметь под Cygwin установленные ВСЕ программы, используемые во время компиляции.
Очень минимальный набор это binutils, gcc, g++, glibc, make, sh
Как правило, для компиляции более или менее сложных программ нужна еще куча инструментального софта, так что установка по умолчанию Cygwin не катит. Достаточно вероятно, что ПОЛНАЯ установка Cygwin, то есть выбираем при установке ВСЕ пакеты, даст возможность компилировать 75% программ.
1.4 При установке Linux, инструментальный софт устанавливается, как правило, по умолчанию, хотя и не во всех дистрибутивах. Потому программа и компилируется в Linux без проблем.

2. Есть программа make. Вообще-то полное название GNU make, потому как всякие CBuilder-ы то-же имеют такую программу в своем составе, но они в данном случае негодятся.
Эти программа читает Makefile и выполняет то, что там написано.
gcc - это компилятор. Его вызов осуществляется программой make в соответствии с написанными правилами в Makefile.

3. У меня есть некоторый опыт перекомпиляции Linux программ под Cygwin.
В простейших случаях все работает без проблем. Но если программа чуть сложнее школьных упражнений по информатике, то возникает такое количество проблем, что лучше сразу отказаться от этой затеи и перейти на Linux. Если автор программы изначально не писал программу в расчете на Cygwin - то это работенка для мазохистов.

PS: Использую VirtualBox (virtualbox.org), очень хорошо работает. Если не хотите "чистый" Linux, поставте его в виртуальную машину на VirtualBox.

PPS: У Вас же не возникает мысли написать и компилировать программу для Windows используя Linux.
А между прочим это гораздо легче, чем Linux программу компилить в Cygwin.
west329_
Вот листин Makefile


Цитата
SHELL = /bin/sh

VER = $(subst ",,$(filter-out \#define CS_VERSION,$(shell grep CS_VERSION globals.h)))
export VER

linux: i386-pc-linux
freebsd: i386-pc-freebsd
tuxbox: cross-powerpc-tuxbox-linux
win: cross-i386-pc-cygwin
cygwin: i386-pc-cygwin

std: linux \
cross-i386-pc-cygwin \
cross-powerpc-tuxbox-linux \
cross-i386-pc-freebsd \
cross-arm-nslu2-linux \
cross-mipsel-router-linux-uclibc927 \
cross-mipsel-router-linux-uclibc928 \
cross-mipsel-tuxbox-linux-glibc \
cross-sh4-linux

all: \
cross-sparc-sun-solaris2.7 \
cross-rs6000-ibm-aix4.2 \
cross-mips-sgi-irix6.5


dist: std
@cd Distribution && tar cvf "../mpcs$(VER).tar" *
@bzip2 -9f "mpcs$(VER).tar"

extra: all
@cd Distribution && tar cvf "../mpcs$(VER)-extra.tar" *
@bzip2 -9f "mpcs$(VER)-extra.tar"

clean:
@-rm -rf mpcs-ostype.h lib Distribution/mpcs-*

tar: clean
@tar cvf "mpcs$(VER)-src.tar" Distribution Make* *.c *.h cscrypt csctapi
@bzip2 -9f "mpcs$(VER)-src.tar"

nptar: clean
@tar cvf "mpcs$(VER)-nonpublic-src.tar" Distribution Make* *.c *.np *.h cscrypt csctapi csgbox
@bzip2 -9f "mpcs$(VER)-nonpublic-src.tar"

######################################################################
#
# LINUX native
#
######################################################################
i386-pc-linux:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=gcc \
DS_AR=ar \
DS_LD=ld \
DS_RL=ranlib \
DS_ST=strip

######################################################################
#
# FreeBSD native
#
######################################################################
i386-pc-freebsd:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_FREEBSD -DBSD_COMP -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=gcc \
DS_AR=ar \
DS_LD=ld \
DS_RL=ranlib \
DS_ST=strip

######################################################################
#
# FreeBSD 5.4 crosscompiler
#
######################################################################
cross-i386-pc-freebsd:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_FREEBSD -DBSD_COMP -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=i386-pc-freebsd5.4-gcc \
DS_AR=i386-pc-freebsd5.4-ar \
DS_LD=i386-pc-freebsd5.4-ld \
DS_RL=i386-pc-freebsd5.4-ranlib \
DS_ST=i386-pc-freebsd5.4-strip

######################################################################
#
# Tuxbox crosscompiler
#
######################################################################
cross-powerpc-tuxbox-linux:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DTUXBOX -DPPC" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=powerpc-tuxbox-linux-gnu-gcc \
DS_AR=powerpc-tuxbox-linux-gnu-ar \
DS_LD=powerpc-tuxbox-linux-gnu-ld \
DS_RL=powerpc-tuxbox-linux-gnu-ranlib \
DS_ST=powerpc-tuxbox-linux-gnu-strip


######################################################################
#
# sh4 crosscompiler
#
######################################################################
cross-sh4-linux:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-gcc \
DS_AR=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-ar \
DS_LD=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-ld \
DS_RL=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-ranlib \
DS_ST=/opt/STM/STLinux-2.0/devkit/sh4/bin/sh4-linux-strip

######################################################################
#
# Cygwin crosscompiler
#
######################################################################
cross-i386-pc-cygwin:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_CYGWIN32" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=i686-pc-cygwin-gcc \
DS_AR=i686-pc-cygwin-ar \
DS_LD=i686-pc-cygwin-ld \
DS_RL=i686-pc-cygwin-ranlib \
DS_ST=i686-pc-cygwin-strip

######################################################################
#
# Cygwin native
#
######################################################################
i386-pc-cygwin:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_CYGWIN32 -I /tmp/include" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=gcc \
DS_AR=ar \
DS_LD=ld \
DS_RL=ranlib \
DS_ST=strip

######################################################################
#
# Solaris 7 crosscompiler
#
######################################################################
cross-sparc-sun-solaris2.7:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_SOLARIS -DOS_SOLARIS7 -DBSD_COMP -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="-lsocket" \
DS_ARFLAGS="-rvsl" \
DS_CC=sparc-sun-solaris2.7-gcc \
DS_AR=sparc-sun-solaris2.7-ar \
DS_LD=sparc-sun-solaris2.7-ld \
DS_RL=sparc-sun-solaris2.7-ranlib \
DS_ST=sparc-sun-solaris2.7-strip

######################################################################
#
# AIX 4.2 crosscompiler
#
######################################################################
cross-rs6000-ibm-aix4.2:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthreads" \
DS_OPTS="-O2 -DOS_AIX -DOS_AIX42 -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=rs6000-ibm-aix4.2-gcc \
DS_AR=rs6000-ibm-aix4.2-ar \
DS_LD=rs6000-ibm-aix4.2-ld \
DS_RL=rs6000-ibm-aix4.2-ranlib \
DS_ST=rs6000-ibm-aix4.2-strip

######################################################################
#
# IRIX 6.5 crosscompiler
#
######################################################################
cross-mips-sgi-irix6.5:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_IRIX -DOS_IRIX65 -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=mips-sgi-irix6.5-gcc \
DS_AR=mips-sgi-irix6.5-ar \
DS_LD=mips-sgi-irix6.5-ld \
DS_RL=mips-sgi-irix6.5-ranlib \
DS_ST=mips-sgi-irix6.5-strip

cross-mipsel-router-linux-uclibc: cross-mipsel-router-linux-uclibc928
######################################################################
#
# Linux MIPS(LE) crosscompiler with ucLibc 0.9.27
#
######################################################################
cross-mipsel-router-linux-uclibc927:
@-mipsel-linux-uclibc-setlib 0.9.27
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DMIPSEL -DUCLIBC -DUSE_GPIO -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=mipsel-linux-uclibc-gcc \
DS_AR=mipsel-linux-uclibc-ar \
DS_LD=mipsel-linux-uclibc-ld \
DS_RL=mipsel-linux-uclibc-ranlib \
DS_ST=mipsel-linux-uclibc-strip

######################################################################
#
# Linux MIPS(LE) crosscompiler with ucLibc 0.9.28
#
######################################################################
cross-mipsel-router-linux-uclibc928:
@-mipsel-linux-uclibc-setlib 0.9.28
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DMIPSEL -DUCLIBC -DUSE_GPIO -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=mipsel-linux-uclibc-gcc \
DS_AR=mipsel-linux-uclibc-ar \
DS_LD=mipsel-linux-uclibc-ld \
DS_RL=mipsel-linux-uclibc-ranlib \
DS_ST=mipsel-linux-uclibc-strip

######################################################################
#
# Linux MIPS(LE) crosscompiler with glibc (DM7025)
#
######################################################################
cross-mipsel-tuxbox-linux-glibc:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_LINUX -DTUXBOX -DMIPSEL -static-libgcc" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=mipsel-linux-glibc-gcc \
DS_AR=mipsel-linux-glibc-ar \
DS_LD=mipsel-linux-glibc-ld \
DS_RL=mipsel-linux-glibc-ranlib \
DS_ST=mipsel-linux-glibc-strip

######################################################################
#
# HP/UX 10.20 native
#
######################################################################
hppa1.1-hp-hpux10.20:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_HPUX -DOS_HPUX10 -D_XOPEN_SOURCE_EXTENDED" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=gcc \
DS_AR=ar \
DS_LD=ld \
DS_RL=ranlib \
DS_ST=strip

######################################################################
#
# OSF5.1 native
#
######################################################################
alpha-dec-osf5.1:
@-$(MAKE) --no-print-directory \
-f Maketype TYP=$(subst cross-,,$@) \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-O2 -DOS_OSF -DOS_OSF5" \
XDS_CFLAGS="-I/usr/include -c" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_CC=cc \
DS_AR=ar \
DS_LD=ld \
DS_RL=ranlib \
DS_ST=strip

######################################################################
#
# ARM crosscompiler (big-endian)
#
######################################################################
cross-arm-nslu2-linux:
@-$(MAKE) --no-print-directory \
-f Maketype TYP="$(subst cross-,,$@)" \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-DOS_LINUX -O2 -DARM -DALIGNMENT" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_AWK="awk" \
DS_CC="armv5b-softfloat-linux-gcc" \
DS_AR="armv5b-softfloat-linux-ar" \
DS_LD="armv5b-softfloat-linux-ld" \
DS_RL="armv5b-softfloat-linux-ranlib" \
DS_ST="armv5b-softfloat-linux-strip"

######################################################################
#
# ARM crosscompiler (big-endian)
#
######################################################################
cross-armBE-unkown-linux:
-$(MAKE) --no-print-directory \
-f Maketype TYP="$(subst cross-,,$@)" \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-DOS_LINUX -O2 -DARM -DALIGNMENT" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_AWK="awk" \
DS_CC="arm-linux-gcc -mbig-endian" \
DS_AR="arm-linux-ar" \
DS_LD="arm-linux-ld -EB" \
DS_RL="arm-linux-ranlib" \
DS_ST="arm-linux-strip"

######################################################################
#
# ARM crosscompiler (little-endian)
#
######################################################################
cross-armLE-unkown-linux:
-$(MAKE) --no-print-directory \
-f Maketype TYP="$(subst cross-,,$@)" \
OS_LIBS="" \
OS_CULI="-lncurses" \
OS_PTLI="-lpthread" \
DS_OPTS="-DOS_LINUX -O2 -DARM -DALIGNMENT" \
DS_CFLAGS="-c" \
DS_LDFLAGS="" \
DS_ARFLAGS="-rvsl" \
DS_AWK="awk" \
DS_CC="arm-linux-gcc -mlittle-endian" \
DS_AR="arm-linux-ar" \
DS_LD="arm-linux-ld -EL" \
DS_RL="arm-linux-ranlib" \
DS_ST="arm-linux-strip"



Я не выдумываю чтото своё, эта программа прекрасно существует с расширением exe, собранная под CYGwin-ом и прикрасно работает в windows, как и на родном линукс, проверял лично в обеих вариантах а исходники доступны токо линуксовые.

Что-то мне подсказывает
[code]i686-pc-cygwin-ar -rvsl ../lib/libcscrypt-i386-pc-cygwin.a md5.o[code]
что у меня cygvin для i686 а нужно для i386
v_shamaev
Цитата(MrYuran @ May 22 2008, 17:36) *
не может найти обработчик ассемблера. Пошукайте.
И линкер заодно посмотрите, чтоб 2 раза не бегать


Вообще-то ar - это архиватор, чем собирают, разбирают и лезут в библиотеки.
amw
Цитата(west329_ @ May 23 2008, 09:17) *
Вот листин Makefile
...
Что-то мне подсказывает
Код
i686-pc-cygwin-ar -rvsl ../lib/libcscrypt-i386-pc-cygwin.a md5.o

что у меня cygvin для i686 а нужно для i386

Пройдитесь по каталогам cygwin и найдите что у Вас i386 или i686.
Попробуйте заменить в Makefile секции
Код
######################################################################
#
# Cygwin native
#
######################################################################
i386-pc-cygwin:

на соответствующий i686 если у Вас действительно i686-*-gcc.
Собственно для того, чтоб запускать эту программу под Cygwin Вам нужна именно Cygwin native сборка.

Но не думаю, что именно в этом Ваша проблема.
Скорее всего Вы не установили всего необходимого для этой программы либо оно не сконфигурировано (сконфигурировано неправильно).

Цитата
Код
.....
gcc -O2 -DOS_LINUX  -c -Icsctapi mpcs-simples.c
In file included from mpcs-simples.c:1:
globals.h:190: error: parse error before "ulong"
.....

Вероятнее всего нет или не инклудится <sys/types.h>
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.