当我分离编译和链接时,代码不构建
Code doesn't build when I separate compilation and linking
我有一个名为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
代码构建完美,可执行的"加密"被创建。 但是,当我像这样将编译和链接分开时:
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)'
而且我必须让分离的方式出于不相关的原因工作。 知道为什么分离的版本会给我链接错误吗?
知道
为什么包含额外的(尽管不必要的(库目录会导致问题吗?
我能看到的唯一原因是您是否/usr/lib64
中有libstdc++.a
或libstdc++.so
,并且该库以某种方式损坏,或者只是由于某些(意外(原因而丢失了::operator delete
。
要查看"常规"链接选取了哪些(未损坏的(libstdc++
,请执行以下操作:
g++ -o crypto main.o /usr/local/lib/libcryptopp.a -Wl,-y,_ZdlPvm
相关文章:
- FLTK 2.0构建和演示,适用于VS2019的2011年左右的代码库
- Mingw-64 在构建和安装后不会编译 openCV 代码
- Clion显示错误,但可以使用Cmake成功构建代码
- 使用 g++7 构建的代码在访问未对齐的内存时崩溃
- 无法在 geany 上运行代码。无法执行构建命令
- 在Qt/C++中从一个代码构建两个略有不同的项目
- SDL2 不是基于 VS 代码构建的
- 使用 C 代码构建 Tensorflow lite micro
- setuptools:从C++代码构建共享库,然后构建链接到共享库的 Cython 包装器
- 我无法使用可视化工作室代码构建C++
- R dyn.load "Symbol not found"错误,即使C++代码构建良好
- 将c++代码构建为共享库
- 使用现有的cpp核心代码构建Web应用程序
- C++为使用armadillo和hdf5库的简单代码构建错误
- 使用站点的编译代码构建库时,我无法解决C++中的错误 (LNK2001)
- Eclipse中的非源代码构建
- 将测试代码构建为库或可执行文件
- iOS:从c++代码构建静态库失败
- xcode 6.X arm64代码构建失败,没有任何编译或链接错误
- 如何为交叉编译的代码构建单元测试