我一直在互联网上寻找这个问题,但找不到解决方案。我想要实现的是构建一个同时具有OpenSSL
和依赖关系的 CGI 应用程序MySQLClient
。
当我编译我的程序时,使用以下命令:
g++ -Wall -o test.cgi test.cpp -I/usr/include/mysql -lcgicc -lmysqlcppconn -lmysqlclient -lcurl -lnghttp2 -lssl -lcrypto -lpthread -ldl -DCURL_STATICLIB -std=c++11 -lz -static
我收到以下错误:
//usr/local/lib/libcrypto.a(err.o): In function `ERR_remove_thread_state':
err.c:(.text+0xe40): multiple definition of `ERR_remove_thread_state'
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libmysqlclient.a(ssl.cpp.o):(.text+0x1df0): first defined here
我已经尝试了多种解决方案,例如向下和升级到其他版本的 OpenSSL,与此处相反。但是,在使用以下任何 OpenSSL 版本进行编译时,我仍然会收到此错误:
- OpenSSL 0.9.8
- OpenSSL 1.1.0g
- OpenSSL 1.1.1
我应该怎么做才能克服这个错误并能够静态编译我的程序?