尝试链接VMWare共享文件夹中的openSSL时无法解决外部问题



我已经构建了openSSL,并将静态库置于版本控制之下(共享对象不是一个选项(。

当我试图在项目驻留在vmware Ubuntu虚拟机的共享文件夹中时构建该项目时,它会向我抛出各种未解决的外部内容,这些内容似乎源于"找不到libcrypto.a"。

然而,奇怪的是,如果我把完全相同的文件夹复制到本机硬盘上,一切都很好。

我使用QMake作为makefile生成器。传递到命令行的(截断的(命令如下:

arm-none-linux-gnueabi-g++ -o ../../../build/appl .obj/src/appl.o -L/mnt/hgfs/Programming/Project/Modules/build/ARM -L/mnt/hgfs/Programming/Project/ThirdParty/lib/ARM -L/mnt/hgfs/Programming/Project/build/ /mnt/hgfs/Programming/Project/build/libCore.a -lSQLite -lJSON -lcurl -lssl -lcrypto -lpthread -lrt -lz

列出的所有库都是静态库,appl是生成的二进制文件。

错误消息包括:

/mnt/hgfs/Programming/Project/build/libCore.a(Task.o): Task.cpp:(.text+0x298): undefined reference to `EVP_aes_256_cbc'
Task.cpp:(.text+0x145c): undefined reference to `EVP_sha1'

还有很多人喜欢它。是的,我相信这个库是可用的,可读的,因为如上所述,只要是"原生"的,链接就很好。

我的主机操作系统是Windows,Ubuntu是来宾。

你知道这可能是什么原因吗?非常感谢。

我还没有找到原始问题背后的原因,但我已经找到了解决问题的方法。使用GNUBuildtools,您可以将两个openSSL库合并为一个静态库,并将其链接起来。

为此,我使用此链接作为基本说明。我的openSSL构建脚本(在Python中(现在有以下额外步骤:

subprocess.run(["ar", "-M" ], input="n".join([
"create "+ os.path.join(libDir, 'libOpenSSL.a'),
"addlib "+ os.path.join(installDir, 'lib', 'libcrypto.a'),
"addlib "+ os.path.join(installDir, 'lib', 'libssl.a'),
"save",
"end"
]), text=True, check=True)

libDir是您希望得到的文件所在的位置,installDir是您传递给openSSL配置的前缀路径。

最新更新