静态库编译
创新互联公司专业为企业提供安远网站建设、安远做网站、安远网站设计、安远网站制作等企业网站建设、网页设计与制作、安远企业网站模板建站服务,十年安远做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。./config
make
make install
动态库编译
./config shared
make
make install
问题1)relocation R_AARCH64_ADR_PREL_PG_HI21
之前编译完成静态库,没有清理干净,出现问题
指令 ./config shared && make
出错
usr/bin/ld: libcrypto.a(gost_eng.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `stderr@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: libcrypto.a(gost_eng.o)(.text+0x4f0): unresolvable R_AARCH64_ADR_PREL_PG_HI21 relocation against symbol `stderr@@GLIBC_2.17'
/usr/bin/ld: final link failed: bad value
./stdio.h:477:1: error: 'gets' undeclared here (not in a function)
sed -i '/gets is a security hole/d' \
gettext-{runtime/gnulib-lib,tools/{gnulib-lib,libgettextpo}}/stdio.in.h
解决
make clean
./config shared
问题2)undefined reference to
undefined reference to `GENERAL_NAME_free@libcrypto.so.10'
undefined reference to `SSL_get_verify_result@libssl.so.10'
undefined reference to `SSL_CTX_set_default_passwd_cb_userdata@libssl.so.10'
undefined reference to `sk_num@libcrypto.so.10'
undefined reference to `SSL_CTX_ctrl@libssl.so.10'
undefined reference to `CRYPTO_set_dynlock_lock_callback@libcrypto.so.10'
undefined reference to `SSL_accept@libssl.so.10'
undefined reference to `SSL_new@libssl.so.10'
undefined reference to `SSL_CTX_set_cipher_list@libssl.so.10'
按照如上的make install操作,就可以解决该问题,否则需要通过-lssl -lcrypto链接指定的openssl库,同时需要指定openssl的头文件目录
例子
g++ UploadMessageService_server.skeleton.cpp uploadmessageservice.cpp thriftcom_types.cpp thriftcom_constants.cpp pushmessageservice.cpp -lthrift-0.9.0 -lpthread -I /home -I ./ -L. -L /home/dong/3thrdparty/openssl-1.0.2j -fpermissive -o output -DHAVE_NETINET_IN_H
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。