/ / cross-kompilacja za pomocą mingw32 i gmp - c ++, cross-compiling, gmp, mingw32

krzyżowa kompilacja za pomocą mingw32 i gmp - c ++, cross-compiling, gmp, mingw32

Obecnie próbuję cross-kompilować kod c ++, który napisałem, który działał idealnie dobrze na Linuksie.

Zainstalowałem mingw32 i skompilowałem libgmp jako bibliotekę Windows (.a) używając czegoś takiego:

./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc

Mam nadzieję, że zrobiłem to dobrze

Dodałem dwa katalogi do mojego projektu incs i biblioteki. W podkatalogu umieszczam nagłówek .h (gmpxx.h), aw bibliotekach umieszczam libgmpxx.a i libgmp.a

Próbowałem skompilować przy użyciu tego pliku makefile:

CPP=i586-mingw32msvc-g++
CPPSPECS=
LDFLAGS=-I incs/ libs/
EXEC=ceyd++.exe


all: $(EXEC)

$(EXEC): base64.o polynome.o chiffre.o dechiffre.o ceyd.o
$(CPP) -o $@ $^ $(LDFLAGS)

%.o: %.cpp
$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS)

clean:
rm -rf *.o

mrproper: clean
rm -rf $(EXEC)

Usunąłem część ostrzegawczą, ponieważ nie jest tu przydatna.

Kiedy uruchamiam make, mówi mi, że nie znaleziono gmpxx.h ....

Czy ktoś ma rozwiązanie? Próbowałem tego ...

Odpowiedzi:

0 dla odpowiedzi № 1

Twoja dyrektywa kompilacji powinna wskazywać na katalog nagłówkowy "incs", który nie jest:

$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS)

Utwórz zmienną w następujący sposób:

CCFLAGS=-Iincs/

i zmodyfikuj swoją dyrektywę kompilacji:

$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS) $(CCFLAGS)

Ponadto twoja zmienna LDFLAGS powinna wyglądać następująco:

LDFLAGS=-Llibs/ -l...

Gdzie ... wskazuje nazwę biblioteki współdzielonej, z którą się łączysz w libs /. Jeśli masz tylko bibliotekę statyczną (.a) dodaj to do swojej dyrektywy linkowania.