It looks like make is passing -DCRYPTOPP_DISABLE_ASM to all the source
files, most likely because my version of 'as' is to low (1.38).


On Jul 10, 10:29 am, Sean McAllister <[email protected]> wrote:
> So I found some sample code on codeproject (Sample 3) relating the GCM
> functionality of crypto++
>
> http://www.codeproject.com/KB/security/EncryptThenAuthenticate.aspx?d...
>
> I've got the crypto++  library  compiled and I wrote a makefile for that
> sample that links against the crypto++ library:
>
> CC     = g++
> CCOPTS =  -I../../cryptopp
> LDOPTS =  -L../../cryptopp -lcryptopp
>
> all: example_3
>
> stdafx.o: stdafx.cpp
>     $(CC) $(CCOPTS) -c stdafx.cpp -o stdafx.o
>
> example_3: Sample.cpp stdafx.o stdafx.h
>     $(CC) $(CCOPTS) $(LDOPTS) Sample.cpp -o example_3 stdafx.o
>
> clean:
>     rm -rf example_3 *.o
>
> But when I go to do the final linking, I get this:
>
> Undefined symbols:
>   "CryptoPP::Rijndael::Enc::AdvancedProcessBlocks(unsigned char const*,
> unsigned char const*, unsigned char*, unsigned long, unsigned int) const",
> referenced from:
>       vtable for CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
> CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>       vtable for
> CryptoPP::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
> CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>   "non-virtual thunk to
> CryptoPP::Rijndael::Enc::AdvancedProcessBlocks(unsigned char const*,
> unsigned char const*, unsigned char*, unsigned long, unsigned int) const",
> referenced from:
>       vtable for CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
> CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
>       vtable for
> CryptoPP::ClonableImpl<CryptoPP::BlockCipherFinal<(CryptoPP::CipherDir)0,
> CryptoPP::Rijndael::Enc>, CryptoPP::Rijndael::Enc>in ccz7OlpQ.o
> ld: symbol(s) not found
>
> Checking in rijndael.cpp I can see the function defintiion, but it's wrapper
> in an ifdef :
>
> #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE || defined(CRYPTOPP_X64_MASM_AVAILABLE)
>
> Rijndae::Enc::AdvancedProcessBlocks
> #endif
>
> Which would seem to indicate those flags are false and undefined
> respectively.  But the GCM encryptor/decryptor is still trying to use
> this function.
>
> Is this a bug or have I somehow mis-compiled (I just ran make -f
> GNUmakefile)?
>
> Here's my uname and gcc -v info
>
> uname:
> Darwin localhost 9.7.0 Darwin Kernel Version 9.7.0: Tue Mar 31 22:52:17 PDT
> 2009; root:xnu-1228.12.14~1/RELEASE_I386 i386 i386
>
> gcc -v
>
> Target: i686-apple-darwin9
> Configured with: /var/tmp/gcc/gcc-5465~16/src/configure --disable-checking
> -enable-werror --prefix=/usr --mandir=/share/man
> --enable-languages=c,objc,c++,obj-c++
> --program-transform-name=/^[cg][^.-]*$/s/$/-4.0/
> --with-gxx-include-dir=/include/c++/4.0.0 --with-slibdir=/usr/lib
> --build=i686-apple-darwin9 --with-arch=apple --with-tune=generic
> --host=i686-apple-darwin9 --target=i686-apple-darwin9
> Thread model: posix
> gcc version 4.0.1 (Apple Inc. build 5465)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---

Reply via email to