У меня есть файл с именем main.cpp, и я использую общую библиотеку с полным путем: «/usr/local/lib/libcryptopp.a
», а мой каталог включения: «/usr/local/include/cryptopp
».
Когда япопробуйте выполнить сборку с помощью этой команды:
g++ -o crypto -g main.cpp -I /usr/local/include/cryptopp /usr/local/lib/libcryptopp.a
Код строится идеально, и создается исполняемый файл "crypto".Однако, когда я разделяю компиляцию и связывание следующим образом:
g++ -c -g -I/usr/local/include/cryptopp -o main.o main.cpp
g++ -o crypto main.o -L/usr/lib64 /usr/local/lib/libcryptopp.a
, я получаю следующие ошибки:
/usr/local/lib/libcryptopp.a(algparam.o): In function `CryptoPP::CombinedNameValuePairs::~CombinedNameValuePairs()':
/home/stsadm/JJ/algparam.h:135: undefined reference to `operator delete(void*, unsigned long)'
/usr/local/lib/libcryptopp.a(pubkey.o): In function `CryptoPP::P1363_MGF1KDF2_Common(CryptoPP::HashTransformation&, unsigned char*, unsigned long, unsigned char const*, unsigned long, unsigned char const*, unsigned long, bool, unsigned int)':
/home/stsadm/JJ/pubkey.cpp:17: undefined reference to `operator delete(void*, unsigned long)'
/usr/local/lib/libcryptopp.a(pubkey.o): In function `CryptoPP::PK_SignatureScheme::InvalidKeyLength::~InvalidKeyLength()':
/home/stsadm/JJ/cryptlib.h:2459: undefined reference to `operator delete(void*, unsigned long)'
/usr/local/lib/libcryptopp.a(pubkey.o): In function `CryptoPP::PK_SignatureScheme::KeyTooShort::~KeyTooShort()':
/home/stsadm/JJ/cryptlib.h:2469: undefined reference to `operator delete(void*, unsigned long)'
/usr/local/lib/libcryptopp.a(pubkey.o): In function `CryptoPP::HashFilter::~HashFilter()':
/home/stsadm/JJ/filters.h:517: undefined reference to `operator delete(void*, unsigned long)'
И у меня есть , чтобы заставить работать отдельный путьпо несвязанным причинам.Любые идеи, почему разделенная версия дает мне ошибки связывания?