我正在尝试编译一个库 libEncryption.so。
这是我的 make 文件的内容:
cc -g -w -fPIC -c -ISource/Header -I//usr/local/ssl/include -L//usr/local/ssl/lib - lssl -lcrypto Source/Common/C/Encryption.c -DBIT64 -DDBG -DLITTLEENDIAN -DOMS -DRMS
mv Encryption.o Objects/Encryption.o
ld -fPIC -G Objects/Encryption.o -L/usr/local/ssl/lib -lssl -lcrypto -o libEncryption.so
运行此程序时,我不断收到以下错误
ld: /usr/local/ssl/lib/libcrypto.a(sha1dgst.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC /usr/local/ssl/lib/libcrypto.a: could not read symbols: Bad value
最佳答案
它告诉您 libcrypto.a 不是用 fPIC
编译的。
您应该使用 -fPIC
重新构建它,或者在编译您的内容时放弃使用 -fPIC
。
关于compilation - 共享对象编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165209/