Package: libcrypto++6 Version: 5.6.4-8 Followup-For: Bug #932620 Came up against the same problem. Test case below:
================================================================ // Build with // $ make LDFLAGS=$(pkg-config --libs libcrypto++) cryptopp-link #include <iostream> #include <crypto++/blake2.h> #include <crypto++/hex.h> #define DIGEST_SIZE CryptoPP::BLAKE2b::DIGESTSIZE static std::string hash_key (const std::list<std::string> &key) { CryptoPP::BLAKE2b hasher(DIGEST_SIZE); for (auto& s : key) { hasher.Update(reinterpret_cast<const byte *>(s.data()), s.size()); } byte digest[DIGEST_SIZE]; hasher.Final(&digest[0]); std::string digest_str; CryptoPP::HexEncoder(new CryptoPP::StringSink(digest_str)) .Put(&digest[0], DIGEST_SIZE); return digest_str; } int main (int argc, char **argv) { std::list<std::string> key; for (int i = 0; i < argc; ++i) { key.push_back (argv[i]); } std::string hash( hash_key(key) ); std::cout << hash << std::endl; return 0; } ================================================================ Produces: ================================================================ g++ -lcrypto++ cryptopp-link.cpp -o cryptopp-link /usr/bin/ld: /tmp/cckaN0JV.o: in function `hash_key(std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&)': cryptopp-link.cpp:(.text+0x2be): undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, true>::Update(unsigned char const*, unsigned long)' /usr/bin/ld: /tmp/cckaN0JV.o: in function `CryptoPP::BLAKE2b::BLAKE2b(bool, unsigned int)': cryptopp-link.cpp:(.text._ZN8CryptoPP7BLAKE2bC2Ebj[_ZN8CryptoPP7BLAKE2bC5Ebj]+0x25): undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, true>::BLAKE2_Base(bool, unsigned int)' /usr/bin/ld: /tmp/cckaN0JV.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/cckaN0JV.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/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP7BLAKE2bE[_ZTVN8CryptoPP7BLAKE2bE]+0xb0): undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, true>::Restart()' /usr/bin/ld: /tmp/cckaN0JV.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/cckaN0JV.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/cckaN0JV.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/cckaN0JV.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/cckaN0JV.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/cckaN0JV.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/cckaN0JV.o:(.data.rel.ro._ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE[_ZTVN8CryptoPP11BLAKE2_BaseIyLb1EEE]+0xb0): undefined reference to `CryptoPP::BLAKE2_Base<unsigned long long, true>::Restart()' /usr/bin/ld: /tmp/cckaN0JV.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/cckaN0JV.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/cckaN0JV.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/cckaN0JV.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 make: *** [<builtin>: cryptopp-link] Error 1 ================================================================ -- System Information: Debian Release: 10.4 APT prefers stable APT policy: (991, 'stable'), (500, 'stable-updates'), (500, 'stable-debug'), (500, 'oldstable-updates'), (500, 'oldstable-debug'), (500, 'oldoldstable'), (500, 'oldstable'), (70, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 5.8.0-linux-latest-34 (SMP w/16 CPU cores; PREEMPT) Kernel taint flags: TAINT_WARN Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: sysvinit (via /sbin/init) Versions of packages libcrypto++6 depends on: ii libc6 2.28-10 ii libgcc-s1 [libgcc1] 10.2.0-6 ii libgcc1 1:9.2.1-16 ii libstdc++6 9.2.1-16 libcrypto++6 recommends no packages. libcrypto++6 suggests no packages. -- no debconf information