热门IT资讯网

OpenSSL Linux动态库编译

发表于:2024-11-21 作者:热门IT资讯网编辑
编辑最后更新 2024年11月21日,静态库编译./configmakemake install动态库编译./config sharedmakemake install问题1)relocation R_AARCH64_ADR_PREL_P

静态库编译

./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 `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'
undefined reference to `[email protected]'

按照如上的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



0