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 № 1Twoja 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.