Boost Error

closed account (EwCjE3v7)
Hello there, I get the following error with Boost:

 g++ Testing.cpp -o t -std=c++11
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::gmp_int::gmp_int()':
Testing.cpp:(.text._ZN5boost14multiprecision8backends7gmp_intC2Ev[_ZN5boost14multiprecision8backends7gmp_intC5Ev]+0x14): undefined reference to `__gmpz_init'
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::gmp_int::operator=(long)':
Testing.cpp:(.text._ZN5boost14multiprecision8backends7gmp_intaSEl[_ZN5boost14multiprecision8backends7gmp_intaSEl]+0x25): undefined reference to `__gmpz_init'
Testing.cpp:(.text._ZN5boost14multiprecision8backends7gmp_intaSEl[_ZN5boost14multiprecision8backends7gmp_intaSEl]+0x38): undefined reference to `__gmpz_set_si'
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::gmp_int::~gmp_int()':
Testing.cpp:(.text._ZN5boost14multiprecision8backends7gmp_intD2Ev[_ZN5boost14multiprecision8backends7gmp_intD5Ev]+0x21): undefined reference to `__gmpz_clear'
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::gmp_int::compare(long) const':
Testing.cpp:(.text._ZNK5boost14multiprecision8backends7gmp_int7compareEl[_ZNK5boost14multiprecision8backends7gmp_int7compareEl]+0x45): undefined reference to `__gmpz_cmp_si'
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::eval_add(boost::multiprecision::backends::gmp_int&, unsigned long)':
Testing.cpp:(.text._ZN5boost14multiprecision8backends8eval_addERNS1_7gmp_intEm[_ZN5boost14multiprecision8backends8eval_addERNS1_7gmp_intEm]+0x37): undefined reference to `__gmpz_add_ui'
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::eval_modulus(boost::multiprecision::backends::gmp_int&, boost::multiprecision::backends::gmp_int const&, boost::multiprecision::backends::gmp_int const&)':
Testing.cpp:(.text._ZN5boost14multiprecision8backends12eval_modulusERNS1_7gmp_intERKS2_S5_[_ZN5boost14multiprecision8backends12eval_modulusERNS1_7gmp_intERKS2_S5_]+0x4b): undefined reference to `__gmpz_tdiv_r'
/tmp/ccxR1gXL.o: In function `boost::multiprecision::backends::eval_convert_to(long*, boost::multiprecision::backends::gmp_int const&)':
Testing.cpp:(.text._ZN5boost14multiprecision8backends15eval_convert_toEPlRKNS1_7gmp_intE[_ZN5boost14multiprecision8backends15eval_convert_toEPlRKNS1_7gmp_intE]+0x20): undefined reference to `__gmpz_fits_slong_p'
Testing.cpp:(.text._ZN5boost14multiprecision8backends15eval_convert_toEPlRKNS1_7gmp_intE[_ZN5boost14multiprecision8backends15eval_convert_toEPlRKNS1_7gmp_intE]+0x96): undefined reference to `__gmpz_get_si'
collect2: error: ld returned 1 exit status


Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <boost/multiprecision/gmp.hpp>
using namespace std;

int main()
{
      vector<int> factors;
      vector<boost::multiprecision::mpz_int> primeN, primeF;

      for (boost::multiprecision::mpz_int i = 1; i != 600851475143 /2; ++i) {
            if (600851475143 % i == 0)
                  factors.push_back(int(static_cast<int>(i)));
      }

      for (auto beg = factors.cbegin(); beg != factors.cend(); ++beg) {

      }

      for (auto beg = factors.cbegin(); beg != factors.cend(); ++beg) {
            for (int j = 2; j*j <= *beg; ++j) {
                  if (*beg % j == 0)
                        break;
                  else if (j + 1 > sqrt(*beg)) {
                        primeN.push_back(*beg);
                  }

            }
      }

      return 0;
}


Thank you
It seems like you might not have the GMP Library installed/linked. Make sure you have it otherwise you can't use gmp.hpp. You could also just use cpp_int instead.
closed account (EwCjE3v7)
I did install the GMP Library I believe but I'll go with cpp_int for now. Thank you
Topic archived. No new replies allowed.