尝试在 C++ 中生成素数时 GMP 中的链接错误
Linking error in GMP when trying to generate prime numbers in C++
我正在尝试编写一个简单的程序,作为更大项目的一部分,在 GMP 中生成大质数,到目前为止,我已经勾勒出以下函数:
primes.cpp
#include"primes.h"
void random_prime(mpz_t result){
gmp_randstate_t state;
mpz_t prime;
mpz_init(prime);
gmp_randinit_default(state);
mpz_set(result,prime);
mpz_clear(prime);
gmp_randclear(state);
}
primes.h
#include<iostream>
#include<gmp.h>
using namespace std;
void random_prime(mpz_t resultado);
这样编译的
CC = g++
all: link
primes:
${CC} -c primes.cpp -lgmpxx -lgmp
main: primes ...
${CC} -Wall main.cpp -c -lgmpxx -lgmp
link: main
${CC} -o main primes.o ...
我在“link”行之后收到这些错误 运行:
primes.o: In function `random_prime(__mpz_struct*)':
primes.cpp:(.text+0x23): undefined reference to `__gmpz_init'
primes.cpp:(.text+0x2f): undefined reference to `__gmp_randinit_default'
primes.cpp:(.text+0x42): undefined reference to `__gmpz_set'
primes.cpp:(.text+0x4e): undefined reference to `__gmpz_clear'
primes.cpp:(.text+0x5a): undefined reference to `__gmp_randclear'
手册看了好几遍,无济于事,我也在SO和其他论坛上找到了一些相关问题,但none有帮助。最后我尝试重新安装库,两次,但也没有帮助。
如有任何帮助,我们将不胜感激。
当链接并且不编译单个.cpp
文件时使用-l
选项。
link: main
${CC} -o main primes.o ... -lgmpxx -lgmp
并在其他地方去掉 -l
选项。
我正在尝试编写一个简单的程序,作为更大项目的一部分,在 GMP 中生成大质数,到目前为止,我已经勾勒出以下函数:
primes.cpp
#include"primes.h"
void random_prime(mpz_t result){
gmp_randstate_t state;
mpz_t prime;
mpz_init(prime);
gmp_randinit_default(state);
mpz_set(result,prime);
mpz_clear(prime);
gmp_randclear(state);
}
primes.h
#include<iostream>
#include<gmp.h>
using namespace std;
void random_prime(mpz_t resultado);
这样编译的
CC = g++
all: link
primes:
${CC} -c primes.cpp -lgmpxx -lgmp
main: primes ...
${CC} -Wall main.cpp -c -lgmpxx -lgmp
link: main
${CC} -o main primes.o ...
我在“link”行之后收到这些错误 运行:
primes.o: In function `random_prime(__mpz_struct*)':
primes.cpp:(.text+0x23): undefined reference to `__gmpz_init'
primes.cpp:(.text+0x2f): undefined reference to `__gmp_randinit_default'
primes.cpp:(.text+0x42): undefined reference to `__gmpz_set'
primes.cpp:(.text+0x4e): undefined reference to `__gmpz_clear'
primes.cpp:(.text+0x5a): undefined reference to `__gmp_randclear'
手册看了好几遍,无济于事,我也在SO和其他论坛上找到了一些相关问题,但none有帮助。最后我尝试重新安装库,两次,但也没有帮助。
如有任何帮助,我们将不胜感激。
当链接并且不编译单个.cpp
文件时使用-l
选项。
link: main
${CC} -o main primes.o ... -lgmpxx -lgmp
并在其他地方去掉 -l
选项。