кросс-компиляция с использованием mingw32 и gmp

В настоящее время я пытаюсь сделать кросс-компиляцию написанного мной кода на 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 не найден …

У кого-нибудь есть решение? Тяжело пытался на этом …

0

Решение

Ваша директива компиляции должна указывать на каталог заголовков ‘incs’, которым она не является:

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

Создайте переменную следующим образом:

CCFLAGS=-Iincs/

и измените директиву компиляции:

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

Кроме того, ваша переменная LDFLAGS должна выглядеть так:

LDFLAGS=-Llibs/ -l...

Где … указывает имя разделяемой библиотеки, с которой вы связываетесь в libs /. Если у вас есть только статическая библиотека (.a), добавьте это в директиву линковки.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]