当前位置: 首页 > 面试题库 >

找不到libcrypto库错误

厉文栋
2023-03-14
问题内容

当我尝试编译C它使用OpenSSL的代码“密码”的库函数与COMAND线-lcryptogcc 4.4.3它给出了一个错误

`@ubu:$ gcc -ggdb aes_m.c -Werror -Wall -I /usr/local/ssl/include/ -lcrypto -o aes
 /usr/bin/ld: cannot find -lcrypto
 collect2: ld returned 1 exit status`

这可能是什么原因?

找到命令结果

$ locate libcrypto
/home/abhi/Downloads/openssl-1.0.1b/libcrypto.a
/home/abhi/Downloads/openssl-1.0.1b/libcrypto.pc
/lib/libcrypto.so.0.9.8
/lib/i486/libcrypto.so.0.9.8
/lib/i586/libcrypto.so.0.9.8
/lib/i686/cmov/libcrypto.so.0.9.8
/usr/lib/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib32/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib32/libcrypto.so.0.9.8/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib64/libcrypto.so.0.9.8
/usr/lib/vmware-tools/lib64/libcrypto.so.0.9.8/libcrypto.so.0.9.8
/usr/local/ssl/lib/libcrypto.a
/usr/local/ssl/lib/pkgconfig/libcrypto.pc

有人可以帮忙吗,或者指出我正在做的任何错误

@ Daniel Roethlisberger尝试使用-L标志,但是导致这些错误

gcc -ggdb aes_m.c -Werror -Wall -I /usr/local/ssl/include/ -L /usr/local/ssl/lib -lcrypto -o aes
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup':
dso_dlfcn.c:(.text+0x2d): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x43): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x4d): undefined reference to `dlclose'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0x8f): undefined reference to `dladdr'
dso_dlfcn.c:(.text+0xe9): undefined reference to `dlerror'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_func':
dso_dlfcn.c:(.text+0x4b1): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x590): undefined reference to `dlerror'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_bind_var':
dso_dlfcn.c:(.text+0x611): undefined reference to `dlsym'
dso_dlfcn.c:(.text+0x6f0): undefined reference to `dlerror'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_unload':
dso_dlfcn.c:(.text+0x755): undefined reference to `dlclose'
/usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_load':
dso_dlfcn.c:(.text+0x837): undefined reference to `dlopen'
dso_dlfcn.c:(.text+0x8ae): undefined reference to `dlclose'
dso_dlfcn.c:(.text+0x8f5): undefined reference to `dlerror'
collect2: ld returned 1 exit status

非常感谢


问题答案:

-L /usr/local/ssl/lib/在之前,将其添加到GCC命令行中-lcrypto。由于您是根据下的OpenSSL标头构建的,因此/usr/local/ssl,您还需要链接到具有相同前缀的实际库(即使您似乎只在其中安装了静态库,这可能也可能不是您的意图;您可能需要正确地重新安装从源代码构建的OpenSSL)。

(编辑)要修复dlopen()链接器找不到的和朋友,请添加-ldl到GCC命令行中。-ldl告诉连接器还针对libdl.so链路,其是包含共享库dlopen()dlsym()dlclose()等;
这些功能由OpenSSL在内部使用,因此-ldl在使用-lcrypto(在Linux上)时是间接依赖项。因为要链接到libcrypto的静态版本,所以需要显式链接所有间接依赖项。

如果您不熟悉链接到正确的库的方法,建议您使用从操作系统软件包管理器安装的OpenSSL。可能会为您节省一些麻烦。



 类似资料:
  • 问题内容: 我收到这样的错误消息: Windows无法加载库 名称 库.dll。确保该库位于您的Path环境变量中。线程“主”中的异常java.lang.UnsatifiedLinkError:java.library.path中没有 库名 。 这是我尝试通过cmd在Windows XP上运行jar文件的错误。我想知道java.library.path到底在哪里?我已经将C:\ Program F

  • 首先,这是我第一次使用Apache Derby。我正在使用netbeans,愿意使用嵌入式apache derby,并且我遵循了以下配置和安装数据库的教程 http://netbeans.org/kb/docs/ide/java-db.html#开始 我的数据库名称是“联系人”。表名为“Friends”。 下面是我的测试代码 DatabaseConnector.java DatabaseUI.ja

  • 我使用PyCharm 5在Ubuntu中运行Python 2.7(Anaconda)脚本。我的脚本导入带有的模块,但这会导致错误。因此,似乎库,但找不到。 现在,我已经看到这个库在我的机器上的。所以,在PyCharm中,我去了 在我的脚本中,它打印出的路径与

  • 这里是他的输出图像希望它能帮助你找到我的答案嘿我使用的是最新版本的Python我已经尝试了几天使用pyinstaller将一个Python文件转换成.exe文件这里是我键入的“pyinstaller.exe--onefile--icon=icon.ico file_name.py”每当我运行它时,它显示我找不到我的pyttsx3库,它显示像“warn”然后“lib not found”plz帮助我

  • 我正在尝试用MinGW编译器用CMake构建PODOFO库。它需要一些外部库,如zlib、jpeg、openssl和freetype。我的cmake命令如下: cmake-g“mingw makefiles”_path=c:\users\abhishek\downloads\openSSL-0.9.8h-1-lib\lib-dpodofo_build_shared:bool=false.. 不知何

  • 对于这种类型的错误,我在cocoapods中遵循了faq,似乎没有任何工作。任何帮助都很感激。 整个错误如下所示 Ld build/products/debug-iphonesimulator/komunety.app/komunety normal i386 cd/users/lawrenceflancbaum/dropbox/appledev/appdev/komunety export ip