R.....y
R.....y
#programowanie #cpp #naukaprogramowania #linux chcę skompilować program na windows, ale mingw mi nie widzi biblioteki SDL2

dostaję taki błąd:

redve@redvehost~/Programs/C++/game% make

x8664-w64-mingw32-g++ -o Game.exe -Wall -Wextra -pedantic -O2 -march=native -pipe -std=c++17 -lSDL2 bin/main.o bin/Engine.o bin/Block.o bin/GlobalFuncAndTests.o

/usr/lib/gcc/x86
64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld: cannot find -lSDL2

collect2: error: ld returned 1 exit status

make: *** [Makefile:8: Game] Error 1

tutaj drzewko projektu:
|-- Game
|-- Makefile
|-- bin
| |-- Block.o
| |-- Engine.o
| |-- GlobalFuncAndTests.o
| -- main.o
|-- lib
| |-- SDL2
|
-- glm
-- src
|-- Block
|-- Engine
|-- GlobalFuncAndTests
-- main.cpp

jakby ktoś pytał: ten sam błąd jest kiedy kompiluje z i686-w64-mingw32-g++
nie chcę używać cmake, chcę tylko skompilować na windowsa
0
  • Najlepsze
  • Wszystkie komentarze
MamCieNaHita
@RedveKoronny: sdl, here we go again. tego skurczybyka czasem łatwiej ze źródeł zbudować niż dolinkować...
2
Saly
@RedveKoronny: linkuje się pliki .a lub .so. Pliki .h to headery: interfejs pomiędzy twoją aplikacją a biblioteką
1
SpinOff
@Saly A na Windowsie nie ma innych rozszerzeń takich jak lib czy dll?
1
fervi
@RedveKoronny: W sumie Adios :P Kompilowanie na Windowsa to jak jazda tyłkiem po szkle.
https://aur.archlinux.org/packages/mingw-w64-sdl2
0
R.....y
R.....y
@fervi: niestety wiem, ale jak miałem to kompilowac na windowsie to tez kolorowo nie było
0
Saly
@RedveKoronny: musisz podać jeszcze scieżkę do katalogu, gdzie ma szukać libek. -Llib
0
bruuh
@RedveKoronny: no a wiesz gdzie masz tą bilbioteke? to dodaj jej ściezke do enva

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/xxxx/"
poza tym w parametrze podajesz -lSDL2 a nie powinno być czasem -llib/SDL2
0
R.....y
R.....y
@bruuh: mam w lib/SDL2 czyli mam napisac dodatkowo
-Llib/SDL2
?
@Saly:
0
bruuh
@RedveKoronny: no tak w błędzie masz cannot find -lSLD2 więc jasno wynika że nie widzi tego katalogu bo go nie ma
0
Saly
@RedveKoronny: masz podac sciezke, gdzie sa liby i samego liba, czyli -Llib -lSDL2. Nie szukaj sensu, toolchain do C/C++ to ostatnie miejce na takie rozkminy
0
Saly
@RedveKoronny: no i inna nazwa: biblioteka powinna zaczynac sie od lib czyli libSDL2.a albo libSDL2.so . Skad masz ta nazwe?
0
R.....y
R.....y
@Saly: @bruuh: @fervi: mój obecny makefile wygląda tak (wiem, da sie lepiej, ale robi co ma robić) https://hastebin.com/elenagatel
teraz nie może mi znaleść referencji do SDLRenderPresent, SDLCreateRenderer etc.
0
R.....y
R.....y
@Saly: jaką nazwe?
0
Saly
@RedveKoronny: SDL2, bez rozszerzenia ani przedrostku lib
0
R.....y
R.....y
@Saly: z tego co wiem to po prostu SDL2, nie wiem jaką ma mieć inną nazwe
0
Saly
@RedveKoronny: lib/SDL2, ten plik SDL2. Normalnie w linuxie uzywasz libSDL.so lub libSDL.a, bo tak dziala linker. Skad masz ta golowa nazwe "SDL2"?
0
R.....y
R.....y
Treść przeznaczona dla osób powyżej 18 roku życia...
0
fervi
ale jak miałem to kompilowac na windowsie to tez kolorowo nie było


@RedveKoronny: Bo mam na myśli to, że w ogóle kompilacja programów na Windowsie to masakra.
0
R.....y
R.....y
@fervi: zgodzę sie, ale musze jakos zrobic binarke do odpalenia na windowsie
0
R.....y
R.....y
@Saly: w życiu nie widziałem plików .a i .so
widziałem same .o jako binarki z cpp, może o to chodzi
w lib/SDL2 są same headery
0