gmp 奇怪的行为不允许我编译新项目
gmp strange behaviour that doesn't let me compile new project
我已经使用以下命令在我的 ubuntu gmp 上安装:
sudo apt-get install libgmp3-dev
而且效果很好。
现在我正在尝试创建一个新项目,简单地写
#include "gmp.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(){
mpz_t num;
mpz_init(num);
printf("%s\n",mpz_get_str (NULL, 10, num));
mpz_clear(num);
return 0;
}
给我
> gcc -lgmp mil.c /tmp/ccHvV9kT.o: In function `main':
> mil.c:(.text+0x1f): undefined reference to `__gmpz_init'
> mil.c:(.text+0x35): undefined reference to `__gmpz_get_str'
> mil.c:(.text+0x49): undefined reference to `__gmpz_clear' collect2:
> error: ld returned 1 exit status
我只是复制粘贴了我以前项目的代码,但我得到了同样的错误(在我创建的所有函数中),但是编译我的旧项目我没有得到任何错误。
我的问题是什么???
Order of arguments to gcc
matters很多。
尝试使用(你需要警告和调试信息,所以)
gcc -Wall -Wextra -g mil.c -lgmp -o milprog
然后运行./milprog
。你可能想要 use the gdb
debugger ,
gdb ./milprog
并且您可能希望(出于基准测试目的)通过添加(在 -g
之前)类似 -O2 -march=native
的内容来要求编译器进行优化
学习 use GNU make
(or some other build automation tool, like ninja
), see this。
一定要使用像git这样的版本控制系统。
顺便说一句,我发现在 "gmp.h"
之后包含标准 headers (而不是之前,就像你所做的那样)包含更合乎逻辑和更优雅(像 <stdio.h>
).
我已经使用以下命令在我的 ubuntu gmp 上安装:
sudo apt-get install libgmp3-dev
而且效果很好。 现在我正在尝试创建一个新项目,简单地写
#include "gmp.h"
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(){
mpz_t num;
mpz_init(num);
printf("%s\n",mpz_get_str (NULL, 10, num));
mpz_clear(num);
return 0;
}
给我
> gcc -lgmp mil.c /tmp/ccHvV9kT.o: In function `main':
> mil.c:(.text+0x1f): undefined reference to `__gmpz_init'
> mil.c:(.text+0x35): undefined reference to `__gmpz_get_str'
> mil.c:(.text+0x49): undefined reference to `__gmpz_clear' collect2:
> error: ld returned 1 exit status
我只是复制粘贴了我以前项目的代码,但我得到了同样的错误(在我创建的所有函数中),但是编译我的旧项目我没有得到任何错误。 我的问题是什么???
Order of arguments to gcc
matters很多。
尝试使用(你需要警告和调试信息,所以)
gcc -Wall -Wextra -g mil.c -lgmp -o milprog
然后运行./milprog
。你可能想要 use the gdb
debugger ,
gdb ./milprog
并且您可能希望(出于基准测试目的)通过添加(在 -g
之前)类似 -O2 -march=native
学习 use GNU make
(or some other build automation tool, like ninja
), see this。
一定要使用像git这样的版本控制系统。
顺便说一句,我发现在 "gmp.h"
之后包含标准 headers (而不是之前,就像你所做的那样)包含更合乎逻辑和更优雅(像 <stdio.h>
).