C++ GMP库ostream运算符<<编译但不链接?

And*_*zos 3 c++ linux gmp

$ apt-cache show libgmp10
Package: libgmp10
...
Version: 2:5.0.2+dfsg-2ubuntu2
Run Code Online (Sandbox Code Playgroud)

test.cpp:

#include <gmpxx.h>
#include <iostream>

using namespace std;

int main()
{
    mpz_class x = 42;

    cout << x;
}
Run Code Online (Sandbox Code Playgroud)

编译:

$ g++ -c test.cpp -o test.o
$
Run Code Online (Sandbox Code Playgroud)

链接:

$ g++ test.o -lgmp
test.o: In function `std::ostream& operator<<
    <__mpz_struct [1]>(std::ostream&,
         __gmp_expr<__mpz_struct [1],
              __mpz_struct [1]> const&)':

test.cpp:(.text._ZlsIA1_12__mpz_structERSoS2_RK10__gmp_exprIT_S4_E[_ZlsIA1_12__mpz_structERSoS2_RK10__gmp_exprIT_S4_E]+0x2a):

undefined reference to `operator<<(std::ostream&, __mpz_struct const*)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

operator<<(ostream&, mpz_class)在链接时找不到.是什么赋予了?

Ker*_* SB 10

您需要链接C++库以及C库:

g++ -c test.cpp -o test.o -lgmpxx -lgmp
#                         ^^^^^^^
Run Code Online (Sandbox Code Playgroud)