我正在尝试使用GCC在我的Windows 7机器上的MinGW下编译一个简单的C程序。我使用configure,make,make check和make install成功安装了MPIR(我猜)(没有使用" sudo" - 这是什么?)。
该程序名为" mytest.cpp",位于MPIR的顶级文件夹,即C:/MPIR/mpir-2.7.0/,其中也包括" mpir.h&#34 ;坐着(它是""(正确的?有几个?)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"内部的一些目录上下爬行。目录。但是,我目前正在使用shell C:/MPIR/mpir-2.7.0/目录。
有什么问题?如何让GCC找到mpir文件?应该编译选项" -I"拼写不同?我也听说过一些" -L"选项但无法找到任何地方。感谢。
答案 0 :(得分:1)
更改
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标志链接的库。
另外,我建议使用包含和库的相对路径而不是绝对路径。
答案 1 :(得分:0)
好的,我修好了。
总而言之,关键点是:
- 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
最佳。