我正在尝试使用64位MinGW编译器在Windows笔记本电脑上运行c代码。在代码的开头有几行指向其他文件,例如:
#include <openssl/e_os2.h>
编译代码时出现以下错误:
C:\MinGW\bin\openssl\apps>gcc s_server.c
s_server.c:21:27: fatal error: openssl/e_os2.h: No such file or directory
#include <openssl/e_os2.h>
^
compilation terminated.
我确保文件位于正确的位置,但是仍然发生错误。我认为发生错误是因为我在64位系统上运行32位二进制文件。如果我没有Linux系统,是否有任何方法可以解决此问题?
答案 0 :(得分:0)
C:\MinGW\bin\openssl\apps>gcc s_server.c
s_server.c:21:27: fatal error: openssl/e_os2.h: No such file or directory
#include <openssl/e_os2.h>
^
compilation terminated.
我相信您在编译期间需要一个-I
参数。标头 not 不在apps/
目录中。相反,它们位于../include/
(相对于apps/
)。
也许是这样的编译命令:
# from apps/ directory
gcc -I ../include/ s_server.c
您可能会遇到其他问题,因为您需要链接到libssl
和libcrypto
。请注意,您仍有工作要做。
这是Linux上的样子:
openssl$ find . -name e_os2.h
./include/openssl/e_os2.h
openssl$ cd apps
apps$ ls ../include/openssl/e_os2.h
../include/openssl/e_os2.h
由于相对路径为../include/openssl/e_os2.h
,而源文件为#include "openssl/e_os2.h"
,因此只需使用../include
包含-I
。
我正在64位系统上运行32位二进制文件...
您需要将OpenSSL构建为32位。运行./Configure LIST
以获取MinGW目标的列表。然后,配置适当的三元组。
您可能需要在程序的命令行中添加-m32
。