An example program, found here --

https://www.cryptopp.com/wiki/BLAKE2#Sample_Programs

-- also fails to link. In contrast, the equivalent example program from
here --

https://www.cryptopp.com/wiki/MD5

-- compiles, links, and runs without any problem.

Apparently, the BLAKE2 object module is not present in the dynamic
library.


$ cat btest.cc 

#include "cryptlib.h"
#include "blake2.h"
#include <iostream>

int main (int argc, char* argv[])
{
    using namespace CryptoPP;

    BLAKE2b hash;       
    std::cout << "Name: " << hash.AlgorithmName() << std::endl;
    std::cout << "Digest size: " << hash.DigestSize() << std::endl;
    std::cout << "Block size: " << hash.BlockSize() << std::endl;

    return 0; 
}


$ g++ -I/usr/include/cryptopp -o btest btest.cc -lcryptopp

/usr/bin/ld: /tmp/ccfdvMC5.o: in function `CryptoPP::BLAKE2b::BLAKE2b(bool, 
unsigned int)':
btest.cc:(.text._ZN8CryptoPP7BLAKE2bC2Ebj[_ZN8CryptoPP7BLAKE2bC5Ebj]+0x25): 
undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::BLAKE2_Base(bool, unsigned int)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0x88):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::UncheckedSetKey(unsigned char const*, unsigned int, 
CryptoPP::NameValuePairs const&)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xa8):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xb0):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::Restart()'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xb8):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::TruncatedFinal(unsigned char*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xf0):
 undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned 
long long, true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0x108):
 undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned 
long long, true>::Restart()'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0x148):
 undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned 
long long, true>::TruncatedFinal(unsigned char*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0x88):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::UncheckedSetKey(unsigned char const*, unsigned int, 
CryptoPP::NameValuePairs const&)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xa8):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xb0):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::Restart()'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xb8):
 undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, 
true>::TruncatedFinal(unsigned char*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xf0):
 undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned 
long long, true>::Update(unsigned char const*, unsigned long)'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0x108):
 undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned 
long long, true>::Restart()'
/usr/bin/ld: 
/tmp/ccfdvMC5.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0x148):
 undefined reference to `non-virtual thunk to CryptoPP::BLAKE2_Base<unsigned 
long long, true>::TruncatedFinal(unsigned char*, unsigned long)'
collect2: error: ld returned 1 exit status

Reply via email to