Kompilowanie programu z gnu/linux na windows

0

Witam, skonczylem juz ten moj program ponga, teraz mam problem jak go skompilowac na windowsa, chcialbym zeby dzialal w cmd windowsa 64bitowego, tylko ze program uzywa bibliotek gnu/linuxowych, tzn wlasciwie to tylko dwoch - unistd.h <- ona nie jest problemem, zamienie po prostu funkcje sleep() na Sleep() juz tak wczesniej robilem, ale problemem jest ncurses, pytalem juz ludzi i mowia zebym sciagnal windowsowa wersje ncurses, tak tez zrobilem -> http://www.projectpluto.com/win32a.htm ; jest to fork oficjalnego pdcurses, pobralem skonfigurowalem i skompilowalem, no i mam ta biblioteke, do kompilacji na windowsa uzywam programu mingw, ale ta biblioteka co pobralem jakos slabo udokumentowana jest, nie moge tam znalezc informacji "i co teraz", no mam ta biblioteke, mam mingw, co mam teraz zrobic zebym mogl skopilowac ten program na windowsa ?

0

Wystarczy dodać odpowiednie includy, skompilować i zlinkować. Jaki to problem? Jeżeli masz pliki biblioteki to po prostu dodajesz je do linkera (-L / -l) o raz dodajesz ścieżkę includów (-I)

0

Mhm, poczytam jeszcze o opcjach mingwa i zlinkuje te biblioteki statycznie i dam znac jak mi poszlo, ale mam jeszcze pytanie, bo na windowsie biblioteki maja chyba rozszerzenie dll tak ? Bo po kompilacji tej biblioteki nie mam w srodku zadnych plikow *dll, mam tylko jeden *so libXCurses.so, a rozszerzenia *so na gnu/linuxie sa uzywane, czyli na czym polega ten bajer ze ta biblioteka jest na windowsa ? nie rozumiem

0

Ale tu ci żadne linkowanie nie pomoże, bo na windowsa nie ma ncurses. Jest natomiast pdcurses nie próbowałem, ale jest.
http://gnuwin32.sourceforge.net/packages/pdcurses.htm
Przed pisaniem softu który w założeniu miał być cross-platformowy, warto spojrzeć czy biblioteka obsługuje dane platformy ; ) Bo zmiana rozszerzenia z so na dll nie pomoże.
// edit
jak chcesz wiedzieć czym jest *.so to masz: http://www.skyfree.org/linux/references/ELF_Format.pdf. Rozdział pierwszy i drugi.

1

Bo po kompilacji tej biblioteki nie mam w srodku zadnych plikow *dll, mam tylko jeden *so libXCurses.so, a rozszerzenia *so na gnu/linuxie sa uzywane,

Jeśli to jest biblioteka dynamiczna, to powinna mieć rozszerzenie .dll, chociaż dla Windowsa to nie ma tak naprawdę znaczenia - można załadować bibliotekę dynamiczną o dowolnym rozszerzeniu. Ważna jest zawartość.

Biblioteki statyczne mają rozszerzenie zależne od kompilatora. W świecie windowsowym „panuje” rozszerzenie .lib, ale mingw jako imitujący uniksa, używa .a

Takie samo rozszerzenie (.lib/.a) mają biblioteki importowe, które są tylko informacją dla linkera, że kod funkcji będzie w bibliotece dll (samej dll-ki nie podaje się linkerowi, będzie potrzebna dopiero do uruchomienia programu)

0

Nie wiem co z tym zrobic jednak ;c

Mam ten folder caly

root dir
--------------
HISTORY      PDCurses.spec  config.h       config.sub    curspriv.h  exp-base.def  makedist.mif  term.h       win32a
IMPLEMNT     README         config.h.in    configure     demos       exp-wide.def  panel.h       version.mif  win32a.zip
Makefile     aclocal.m4     config.log     configure.ac  doc         install-sh    pdcurses      watcom.mif   x11
Makefile.in  config.guess   config.status  curses.h      dos         libobjs.mif   sdl1          win32        
folder - x11
--------------------
Makefile         beep.sho      deprec.o     inopts.sho       move.sho       pdcdisp.c     pdcutil.sho  scanw.sho     tuidemo.o
Makefile.aix.in  big_icon.xbm  deprec.sho   insch.o          ncurses_cfg.h  pdcdisp.o     pdcx11.c     scr_dump.o    util.o
README           bkgd.o        firework     insch.sho        newdemo        pdcdisp.sho   pdcx11.h     scr_dump.sho  util.sho
ScrollBox.c      bkgd.sho      firework.o   insstr.o         newdemo.o      pdcgetsc.c    pdcx11.o     scroll.o      window.o
ScrollBox.h      border.o      getch.o      insstr.sho       newtest        pdcgetsc.o    pdcx11.sho   scroll.sho    window.sho
ScrollBox.o      border.sho    getch.sho    instr.o          newtest.o      pdcgetsc.sho  printw.o     slk.o         worm
ScrollBox.sho    clear.o       getstr.o     instr.sho        outopts.o      pdckbd.c      printw.sho   slk.sho       worm.o
ScrollBoxP.h     clear.sho     getstr.sho   kernel.o         outopts.sho    pdckbd.o      ptest        termattr.o    x11.c
addch.o          color.o       getyx.o      kernel.sho       overlay.o      pdckbd.sho    ptest.o      termattr.sho  x11.o
addch.sho        color.sho     getyx.sho    keyname.o        overlay.sho    pdcscrn.c     rain         terminfo.o    x11.sho
addchstr.o       compose.h     inch.o       keyname.sho      pad.o          pdcscrn.o     rain.o       terminfo.sho  xcurses-config.in
addchstr.sho     debug.o       inch.sho     libXCurses.a     pad.sho        pdcscrn.sho   refresh.o    testcurs      xmas
addstr.o         debug.sho     inchstr.o    libXCurses.so    panel.o        pdcsetsc.c    refresh.sho  testcurs.o    xmas.o
addstr.sho       delch.o       inchstr.sho  little_icon.xbm  panel.sho      pdcsetsc.o    sb.c         touch.o       
attr.o           delch.sho     initscr.o    mouse.o          pdcclip.c      pdcsetsc.sho  sb.o         touch.sho     
attr.sho         deleteln.o    initscr.sho  mouse.sho        pdcclip.o      pdcutil.c     sb.sho       tui.o         
beep.o           deleteln.sho  inopts.o     move.o           pdcclip.sho    pdcutil.o     scanw.o      tuidemo       

No i co teraz ? Jak mam to zlinkowac, ktore pliki ? i jakie include dodac ? nie wiem co mam z tym zrobic ....

probuje

x86_64-w64-mingw32-gcc -L ~/Pobrane/pdcurses/ pong.c

ale to nic nie daje, co wpisuje zle ?

0

Moja rada. Odpuść sobie cross-kompilacje jak masz spore problemy z normalnym kompilowaniem pod linuxa. A ten program skompiluj sobie na Windowsie.

0

Nie mam windowsa i nie mam zamiaru uzywac, a problemu z kompilacja na gnu/linuxa nie mam, jednak prosil bym o porade jak ktos wie co robie zle i jak dolaczyc te biblioteki prawidlowo

1 użytkowników online, w tym zalogowanych: 0, gości: 1