Я пытаюсь скомпилировать простую программу на C, используя GCC с MPIR под MinGW на моем компьютере с Windows 7. Я успешно установил MPIR (я полагаю) с настройкой, созданием, проверкой и установкой (не использовал «sudo» — что это?).
Программа называется «mytest.cpp», находится в верхней папке MPIR, а именно C: /MPIR/mpir-2.7.0/, где также находится «mpir.h» (это «the» (правильно? их несколько?) mpir.h?)
#include "mpir.h"using namespace std;
int main ()
{
mpz_t z;
mpz_init(z);
return 0;
}
Я пробовал компилировать через
gcc mytest.c -o mytest -lmpir -I / C: /MPIR/mpir-2.7.0/
с надеждой, что GCC сможет найти mpir.h, «-lmpir», потому что мне сказал полезный разработчик; но тогда это говорит:
«C: / mingw / […] /bin/ld.exe: не удается найти -lmpir»
где «[…]» обозначает некоторые подъемы и опускания каталогов внутри каталога «minGW». Тем не менее, я с оболочкой в настоящее время в
C: /MPIR/mpir-2.7.0/ каталог.
Что случилось? Как заставить GCC найти файлы mpir? Должна ли опция компиляции «-I» быть написана иначе? Я также слышал о какой-то опции «-L», но нигде не смог ее найти. Благодарю.
+ Изменить
gcc mytest.c -o mytest -lmpir -I / C: /MPIR/mpir-2.7.0/
в
gcc mytest.c -o mytest -lmpir -IC: /MPIR/mpir-2.7.0/ -LC: /MPIR/mpir-2.7.0
Вам не нужен / перед C: а флаг -L сообщает компоновщику, где найти библиотеку, с которой вы ссылаетесь, с флагом -l.
Кроме того, я бы рекомендовал использовать относительные пути к вашим включениям и библиотекам вместо абсолютных.
Хорошо, я исправил это.
Подводя итог, критические моменты являются:
— порядок параметров gcc имеет значение: «-o mytest» должен идти до конца, а «-lname» до, но после «-Ldir»;
— путь должен иметь «.libs» в конце, потому что это где библиотеки (даже если они не должны называться libmpir.a)
— (по крайней мере, в MinGW) рабочий формат c: /MPIR/mpir-2.7.0/.libs (то есть абсолютный, также из / usr / local / или других мест)
Что сработало, например:
$ gcc mytest.c -Lc: /MPIR/mpir-2.7.0/.libs -lmpir -o mytest
$ gcc mytest.c -Lc: /MPIR/mpir-2.7.0/.libs -lmpir.dll -o mytest
Лучший.