В настоящее время я пытаюсь сделать кросс-компиляцию написанного мной кода на C ++, который прекрасно работал в Linux.
Я установил mingw32 и скомпилировал libgmp как библиотеку Windows (.a), используя что-то вроде этого:
./configure --prefix=/usr/i586-mingw32msvc/ --host=i586-mingw32msvc
Надеюсь, я все сделал правильно
Я добавил две директории в мой проект incs и libs. В incs я помещаю заголовок .h (gmpxx.h), а в libs я помещаю libgmpxx.a и libgmp.a
Я попытался скомпилировать, используя этот make-файл:
CPP=i586-mingw32msvc-g++
CPPSPECS=
LDFLAGS=-I incs/ libs/
EXEC=ceyd++.exeall: $(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)
Я удалил предупреждающую часть, так как она здесь бесполезна.
Когда я запускаю make, он говорит мне, что gmpxx.h не найден …
У кого-нибудь есть решение? Тяжело пытался на этом …
Ваша директива компиляции должна указывать на каталог заголовков ‘incs’, которым она не является:
$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS)
Создайте переменную следующим образом:
CCFLAGS=-Iincs/
и измените директиву компиляции:
$(CPP) -o $@ -c $< $(CPPWARNINGS) $(CPPSPECS) $(CCFLAGS)
Кроме того, ваша переменная LDFLAGS должна выглядеть так:
LDFLAGS=-Llibs/ -l...
Где … указывает имя разделяемой библиотеки, с которой вы связываетесь в libs /. Если у вас есть только статическая библиотека (.a), добавьте это в директиву линковки.
Других решений пока нет …