meganz / sdk

MEGA C++ SDK
BSD 2-Clause "Simplified" License
1.33k stars 504 forks source link

Compile errors under Linux #2604

Closed jpercyasnet closed 2 years ago

jpercyasnet commented 2 years ago

After the ./configure I tried running make and get the following errors:

configure: Configured to build Mega SDK:

SDK version: 3.9.12 Host setup: x86_64-pc-linux-gnu Install prefix: / Compiler: g++ CXXFLAGS: -g -O2 -DNDEBUG=1 -fPIC -DMEGA_USE_C_ARES LDFLAGS: -lstdc++fs -lrt -pthread gcc hardening: no debug: no static: no sync subsystem: yes chat: no MEGA API yes MEGA API RPC no example apps: yes Rot Perf Logger: no Drive Notif: no MEGA_USE_C_ARES: yes

inotify: yes posix threads: yes

Python bindings: no Python3 bindings: no PHP bindings: no SWIG_FLAGS_PHP:

Java bindings: no

OpenSSL: -lssl -lcrypto Crypto++: -lcryptopp Sodium: -lsodium Zlib: -lz SQLite3: -lsqlite3 c-ares: -lcares cURL: -lcurl FreeImage: -lfreeimage PDFium:
Readline: -lreadline Termcap: -ltermcap PCRE:
LIBUV: -luv LIBRAW: -lraw -fopenmp LIBMEDIAINFO:
FFMPEG:

jp@jp-Aspire-T3-710 ~/MEGAsdk/sdk-master $ sudo make make all-recursive make[1]: Entering directory '/home/jp/MEGAsdk/sdk-master' Making all in include make[2]: Entering directory '/home/jp/MEGAsdk/sdk-master/include' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/home/jp/MEGAsdk/sdk-master/include' make[2]: Entering directory '/home/jp/MEGAsdk/sdk-master' CXX examples/megacli-megacli.o examples/megacli.cpp: In function ‘mega::autocomplete::ACN autocompleteSyntax()’: examples/megacli.cpp:3133:19: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without 3133 | autocomplete::ACN autocompleteSyntax() | ^~~~~~ CXX src/libmega_la-megaclient.lo CXX src/libmega_la-attrmap.lo CXX src/libmega_la-autocomplete.lo CXX src/libmega_la-backofftimer.lo CXX src/libmega_la-base64.lo CXX src/libmega_la-command.lo CXX src/libmega_la-commands.lo CXX src/libmega_la-db.lo CXX src/libmega_la-fileattributefetch.lo CXX src/libmega_la-file.lo CXX src/libmega_la-filefingerprint.lo CXX src/libmega_la-filesystem.lo CXX src/libmega_la-gfx.lo CXX src/libmega_la-http.lo CXX src/libmega_la-json.lo CXX src/libmega_la-mediafileattribute.lo CXX src/libmega_la-node.lo CXX src/libmega_la-pubkeyaction.lo CXX src/libmega_la-raid.lo CXX src/libmega_la-testhooks.lo CXX src/libmega_la-request.lo CXX src/libmega_la-serialize64.lo CXX src/libmega_la-share.lo CXX src/libmega_la-sharenodekeys.lo CXX src/libmega_la-sync.lo CXX src/libmega_la-transfer.lo CXX src/libmega_la-transferslot.lo CXX src/libmega_la-treeproc.lo CXX src/libmega_la-user.lo CXX src/libmega_la-useralerts.lo CXX src/libmega_la-utils.lo CXX src/libmega_la-logging.lo CXX src/libmega_la-waiterbase.lo CXX src/libmega_la-proxy.lo CXX src/crypto/libmega_la-cryptopp.lo CXX src/db/libmega_la-sqlite.lo CXX src/libmega_la-mega_utf8proc.lo CXX src/libmega_la-mega_ccronexpr.lo CXX src/libmega_la-mega_evt_tls.lo CXX src/gfx/libmega_la-external.lo CXX src/libmega_la-pendingcontactrequest.lo CXX src/libmega_la-mega_zxcvbn.lo CXX src/libmega_la-megaapi_impl.lo CXX src/libmega_la-megaapi.lo CXX src/libmega_la-heartbeats.lo CXX src/gfx/libmega_la-freeimage.lo CXX src/crypto/libmega_la-sodium.lo CXX src/libmega_la-mega_http_parser.lo CXX src/posix/libmega_la-fs.lo CXX src/posix/libmega_la-console.lo CXX src/posix/libmega_la-net.lo CXX src/posix/libmega_la-waiter.lo src/posix/waiter.cpp: In member function ‘virtual void mega::PosixWaiter::notify()’: src/posix/waiter.cpp:194:14: warning: ignoring return value of ‘ssize_t write(int, const void, size_t)’, declared with attribute warn_unused_result [-Wunused-result] 194 | write(m_pipe[1], "0", 1); | ~^~~~~~~ CXX src/posix/libmega_la-consolewaiter.lo CXX src/thread/libmega_la-posixthread.lo OBJCXXLD src/libmega.la CXXLD examples/megacli /usr/bin/ld: examples/megacli-megacli.o: in function CryptoPP::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0, CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>::ClonableImpl()': /usr/local/include/cryptopp/simple.h:26: undefined reference toCryptoPP::Rijndael::Enc::Enc()' /usr/bin/ld: /usr/local/include/cryptopp/simple.h:26: undefined reference to CryptoPP::Rijndael::Enc::Enc()' /usr/bin/ld: /usr/local/include/cryptopp/simple.h:26: undefined reference toCryptoPP::Rijndael::Enc::Enc()' /usr/bin/ld: /usr/local/include/cryptopp/simple.h:26: undefined reference to CryptoPP::Rijndael::Enc::Enc()' /usr/bin/ld: /usr/local/include/cryptopp/simple.h:26: undefined reference toCryptoPP::Rijndael::Enc::Enc()' /usr/bin/ld: examples/megacli-megacli.o:/usr/local/include/cryptopp/simple.h:26: more undefined references to CryptoPP::Rijndael::Enc::Enc()' follow /usr/bin/ld: examples/megacli-megacli.o:(.data.rel.ro._ZTVN8CryptoPP20AbstractPolicyHolderINS_28AdditiveCipherAbstractPolicyENS_14CTR_ModePolicyEEE[_ZTVN8CryptoPP20AbstractPolicyHolderINS_28AdditiveCipherAbstractPolicyENS_14CTR_ModePolicyEEE]+0xf8): undefined reference toCryptoPP::CTR_ModePolicy::SeekToIteration(unsigned long)' /usr/bin/ld: examples/megacli-megacli.o:(.data.rel.ro._ZTVN8CryptoPP20AbstractPolicyHolderINS_28AdditiveCipherAbstractPolicyENS_14CTR_ModePolicyEEE[_ZTVN8CryptoPP20AbstractPolicyHolderINS_28AdditiveCipherAbstractPolicyENS_14CTR_ModePolicyEEE]+0x208): undefined reference to non-virtual thunk to CryptoPP::CTR_ModePolicy::SeekToIteration(unsigned long)' /usr/bin/ld: examples/megacli-megacli.o:(.data.rel.ro._ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi16ELb1EEE[_ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi16ELb1EEE]+0xc8): undefined reference toCryptoPP::CCM_Base::UncheckedSpecifyDataLengths(unsigned long, unsigned long, unsigned long)' /usr/bin/ld: examples/megacli-megacli.o:(.data.rel.ro._ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi16ELb0EEE[_ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi16ELb0EEE]+0xc8): undefined reference to CryptoPP::CCM_Base::UncheckedSpecifyDataLengths(unsigned long, unsigned long, unsigned long)' /usr/bin/ld: examples/megacli-megacli.o:(.data.rel.ro._ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi8ELb1EEE[_ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi8ELb1EEE]+0xc8): undefined reference toCryptoPP::CCM_Base::UncheckedSpecifyDataLengths(unsigned long, unsigned long, unsigned long)' /usr/bin/ld: examples/megacli-megacli.o:(.data.rel.ro._ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi8ELb0EEE[_ZTVN8CryptoPP9CCM_FinalINS_8RijndaelELi8ELb0EEE]+0xc8): undefined reference to CryptoPP::CCM_Base::UncheckedSpecifyDataLengths(unsigned long, unsigned long, unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::SHA512::Transform(unsigned long, unsigned long const)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference to CryptoPP::Filter::TransferTo2(CryptoPP::BufferedTransformation&, unsigned long&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::AuthenticatedSymmetricCipher::SpecifyDataLengths(unsigned long, unsigned long, unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference to CryptoPP::BufferedTransformation::Skip(unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::IteratedHashBase<unsigned long, CryptoPP::HashTransformation>::HashMultipleBlocks(unsigned long const, unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference to CryptoPP::IteratedHashBase<unsigned long, CryptoPP::HashTransformation>::Update(unsigned char const*, unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::SHA512::InitState(unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference to CryptoPP::RandomPool::GenerateIntoBufferedTransformation(CryptoPP::BufferedTransformation&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::IteratedHashBase<unsigned long, CryptoPP::HashTransformation>::Restart()' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference to CryptoPP::Filter::CopyRangeTo2(CryptoPP::BufferedTransformation&, unsigned long&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) const' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::StringStore::TransferTo2(CryptoPP::BufferedTransformation&, unsigned long&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference to CryptoPP::IteratedHashBase<unsigned long, CryptoPP::HashTransformation>::CreateUpdateSpace(unsigned long&)' /usr/bin/ld: ./src/.libs/libmega.so: undefined reference toCryptoPP::IteratedHashBase<unsigned long, CryptoPP::HashTransformation>::TruncatedFinal(unsigned char, unsigned long)' collect2: error: ld returned 1 exit status make[2]: [Makefile:2034: examples/megacli] Error 1 make[2]: Leaving directory '/home/jp/MEGAsdk/sdk-master' make[1]: [Makefile:3380: all-recursive] Error 1 make[1]: Leaving directory '/home/jp/MEGAsdk/sdk-master' make: *** [Makefile:1531: all] Error 2

jpercyasnet commented 2 years ago

After doing some searching on the internet, I found this discussion https://stackoverflow.com/questions/50791207/cannot-link-to-crypto-on-debian-due-to-undefined-references. After doing the recommended sudo rm in the /usr/local, I was able to do the make and make install.