MPIR gcc编译 - 找不到-lmpir

时间:2015-06-03 16:26:10

标签: c++ c compilation linker mpir

我正在尝试使用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"选项但无法找到任何地方。感谢。

2 个答案:

答案 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

最佳。