Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kompilacja do .exe na systemie xubuntu

Ostatnio zmodyfikowano 2014-07-24 13:04
Autor Wiadomość
fanmariopl
Temat założony przez niniejszego użytkownika
Kompilacja do .exe na systemie xubuntu
» 2014-07-12 17:30:04
Witam, mam pewien problem z kompilacją programów używających bibliotek które pobieram z internetu. Mam system Xubuntu, ale zależy mi na kompilacji również na system Windows.

Typowy Hello World kompiluję poleceniem:
i586-mingw32msvc-g++ main.cpp -o main.exe
i wszystko działa. Ale pobrałem bibliotekę SFML2 i chciałem skompilować ten kod z kursu:
C/C++
#include <SFML/Window.hpp>

int main()
{
    sf::Window oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Kurs SFML 2.0 - http://cpp0x.pl" );
    while( oknoAplikacji.isOpen() )
    {
        oknoAplikacji.display();
    }
    return 0;
}
Tak więc użyłem polecenia:
i586-mingw32msvc-g++ main.cpp -o main.exe -libsfml-window
I pojawił się błąd:
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/bin/ld: cannot find -libsfml-window

Zapewne kompilator wymyślił sobie jakieś inne miejsce, do którego mam wrzucać biblioteki. Jak je zmienić?
P-113688
Moorfox
» 2014-07-12 18:15:26
musisz ustawic $PATH na nazwe sciezki do biblioteki(chyba)
Nie uzywam linuxowych systemow wiec do konca nie wiem jak to dziala, ale tak podejrzewam.
Btw. To nie problem kompilatora, a preprocesora (tez chyba :P)
P-113694
pekfos
» 2014-07-12 18:39:37
Btw. To nie problem kompilatora, a preprocesora (tez chyba :P)
Ani jednego, ani drugiego.
P-113699
Moorfox
» 2014-07-12 18:49:52
To pochwal się wiedzą i powiedz czego bo ja wnioskuje tak o:
Pakiecik mingw nie może znaleźć biblioteki dynamicznej
W pakiecie pierwszy wywoływany jest preprocesor później kompilator assembler i linker
Preprocesor służy między innymi do wstrzyknięcia kodu biblioteki do kodu który zostanie przekazany kompilatorowi skoro nie może znaleźć biblioteki to i nie może wstrzyknąć ? Gdzie moje rozumowanie jest błędne :P ?
P-113700
pekfos
» 2014-07-12 22:10:34
cannot find -libsfml-window
Opcja -libsfml-window każe szukać biblioteki ibsfml-window. Masz taką..? Powinno być -lsfml-window.

Preprocesor służy między innymi do wstrzyknięcia kodu
Też uważam, że 'wstrzykiwanie kodu' to fajne sformułowanie, ale to nie powód, by używać go niezgodnie ze znaczeniem.
P-113721
fanmariopl
Temat założony przez niniejszego użytkownika
» 2014-07-13 07:55:46
Rzeczywiście, mój błąd. Teraz już się kompiluje, ale gdy uruchamiam program to wyskakuje błąd dotyczący braku pliku libgcc_s_dw2-1.dll.
Próbowałem już dodać -static-libgcc i -static, ale niczego to nie zmieniło.
P-113728
Moorfox
» 2014-07-13 12:49:36
Ja jednak myślę ze sformułowanie 'wstrzykiwanie kodu' może być użyte w różnych kontekstach, i użyte prze ze mnie ów sformułowanie jest w 100% poprawne, ponieważ istnieje pewien kod/ciąg znaków który zostaje wstrzyknięty/doklejony do pliku wejściowego. Yooo, ale mądra wypowiedź ;x

EDIT:
@UP
Nie chce się udzielić na temat, linuxowychOS , no ale xd. Próbujesz uruchomić .exe na linuxie ? przez emulator czy jak ?
Tłumacze jak to działa na windzie(Przy linuxie pewnie podobnie). Masz wcześniej wspominaną zmienną PATH i w niej wyszukiwanie są te .dll ustawiona jest ta zmienna między innymi na folder windowsa a w nim na system dla przykladu C:\Windows\system32\ i tam wrzuca się zazwyczaj .dll inny sposób to wrzucenie do folderu z .exe'kiem.
Teraz jest kolejny problem plik .dll to tak na prawdę imagine file czyli jak .exe nie różni się formatem pliku. Czyli jest także plikiem windows'a. Nie wiem czy to pomoże, ale to użyteczna informacja.
P-113735
pekfos
» 2014-07-13 15:53:12
gdy uruchamiam program to wyskakuje błąd dotyczący braku pliku libgcc_s_dw2-1.dll.
Próbowałem już dodać -static-libgcc i -static, ale niczego to nie zmieniło.
To dołącz ten plik.

Moorfox: myśl co chcesz.
P-113741
« 1 » 2
  Strona 1 z 2 Następna strona