我正在尝试为Windows构建一个名为sscep(http://www.klake.org/~jt/sscep/)的工具。它不能本地运行,我有一个“修补程序”,它可以改变sscep,使其在Windows上编译。 应用补丁后,它确实编译完美,但链接器螺丝。我在minGW/msys中使用gcc 最初的消息是它无法找到加密库,因此我在库中添加了“-L ../ openssl-mingw/lib”,这样就不会产生更多的错误。我的命令中还有命令行开关-lcrypto:gcc -L../openssl-mingw/lib -lcrypto sscep.o init.o net.o sceputils.o pkcs7.o ias.o fileutils.o -o sscep
。在这个目录中是一个libcrypto.a。 OpenSSL本身编译时只需运行./config && make && make test && make install
。此外,源使用minGW tar而不是7-zip提取。针对OpenSSL构建一个程序(sscep):未定义引用'[...]'
sscep.o:sscep.c:(.text+0x83): undefined reference to `[email protected]'
sscep.o:sscep.c:(.text+0xa5): undefined reference to `[email protected]'
sscep.o:sscep.c:(.text+0x3d5): undefined reference to `BIO_new_mem_buf'
sscep.o:sscep.c:(.text+0x3e0): undefined reference to `ASN1_INTEGER_new'
sscep.o:sscep.c:(.text+0x414): undefined reference to `a2i_ASN1_INTEGER'
sscep.o:sscep.c:(.text+0x432): undefined reference to `ASN1_INTEGER_to_BN'
sscep.o:sscep.c:(.text+0x448): undefined reference to `BN_bn2dec'
sscep.o:sscep.c:(.text+0xb7e): undefined reference to `EVP_des_cbc'
sscep.o:sscep.c:(.text+0xbaf): undefined reference to `EVP_bf_cbc'
sscep.o:sscep.c:(.text+0xbda): undefined reference to `EVP_des_cbc'
sscep.o:sscep.c:(.text+0xc02): undefined reference to `EVP_des_ede3_cbc'
sscep.o:sscep.c:(.text+0xc48): undefined reference to `EVP_md5'
sscep.o:sscep.c:(.text+0xc79): undefined reference to `EVP_md5'
sscep.o:sscep.c:(.text+0xca1): undefined reference to `EVP_sha1'
这正好为在那里的每个文件,也应该每一个功能叫:
下的所有文件,这是我的(截)后输出。 在这里搜索和谷歌导致缺少库,但省略了-L指令从上面我得到另一个关于找不到libcrypto的错误。所以我认为图书馆实际上是被发现的,但有些地址或地址错误?
这里我的编译器/链接器知识实际上结束了。 如果补丁可能对此负责(我不相信这些都是openssl函数和编译工作),那么我可以为您提供补丁。
编辑:有没有我应该提供的信息,以便有人可以帮助我?如果这有什么不同,openssl的版本是1.0.1。 关于此主题:如果确实有所作为,可能由于版本错误而发生此错误。据我了解链接器理论,这个错误不应该源于错误的版本,除非所有下面的函数被不同的命名替换(但编译器会抱怨,我猜?)。
另一个补充:因为我在一个64位的Windows 7上,我试图用-m32标志来编译它,但这并没有帮助。我认为,因为mingw已经只有32位,我甚至不能构建x64。另一个问题是,在AMD Opteron虚拟化环境中运行的问题是,是否使用命令“-march = i486”构建openssl?