在 windows libusbmuxd 编译中用 mingw 编译 c
Compiling c with mingw in windows libusbmuxd compiling
所以我已经成功地在 windows mingw 上编译 libusbmuxd 以将其用于 windows 平台。
然而,尽管 autogen.sh 和配置完成没有错误
它无法在下面创建 libusbmuxd。有人对此有任何想法吗?是否有关于如何在 windows 中构建的明确说明?
$ make
make all-recursive
make[1]: Entering directory /home/Naver/libusbmuxd-1.0.10' Making all in common make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/common'
CC collection.lo
CCLD libinternalcommon.la
make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/common' Making all in src make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/src'
CC libusbmuxd.lo
libusbmuxd.c:46:26: error: expected ';', ',' or ')' before numeric constant
#define sleep(x) Sleep(x*1000)
^
libusbmuxd.c:46:25: error: expected ';', ',' or ')' before '' token
#define sleep(x) Sleep(x*1000)
^
make[2]: ** [libusbmuxd.lo] Error 1
make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/Naver/libusbmuxd-1.0.10'
make: *** [all] Error 2
这 可能(见后文*)是您机器上的本地问题,因为查看 the code 线路没问题。一些头文件可能是 corrupted/broken。您可以检查 <winsock2.h>
,它直接包含在上面并且可能是造成此位置的编译器错误的原因:
#ifdef WIN32
#include <windows.h>
#include <winsock2.h>
#define sleep(x) Sleep(x*1000)
因此您可以预处理源文件 (cpp -E libusbmuxd.c >libusbmuxd_pp.c
) 并检查结果。 (尝试编译它以找到错误的新行号)。
*) 顺便说一句,我在 MinGW 中的 cpp
给了我这个:
D:\test>cpp -E test.c >test2.c
In file included from test.c:45:0:
d:\mingw\x86_64-w64-mingw32\include\winsock2.h:15:2: warning: #warning Please include winsock2.h before windows.h [-Wcpp]
#warning Please include winsock2.h before windows.h
^
所以也许交换源代码中的 #include
指令就可以解决这个问题。
所以我已经成功地在 windows mingw 上编译 libusbmuxd 以将其用于 windows 平台。
然而,尽管 autogen.sh 和配置完成没有错误
它无法在下面创建 libusbmuxd。有人对此有任何想法吗?是否有关于如何在 windows 中构建的明确说明?
$ make
make all-recursive
make[1]: Entering directory /home/Naver/libusbmuxd-1.0.10' Making all in common make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/common'
CC collection.lo
CCLD libinternalcommon.la
make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/common' Making all in src make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/src'
CC libusbmuxd.lo
libusbmuxd.c:46:26: error: expected ';', ',' or ')' before numeric constant
#define sleep(x) Sleep(x*1000)
^
libusbmuxd.c:46:25: error: expected ';', ',' or ')' before '' token
#define sleep(x) Sleep(x*1000)
^
make[2]: ** [libusbmuxd.lo] Error 1
make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/Naver/libusbmuxd-1.0.10'
make: *** [all] Error 2
这 可能(见后文*)是您机器上的本地问题,因为查看 the code 线路没问题。一些头文件可能是 corrupted/broken。您可以检查 <winsock2.h>
,它直接包含在上面并且可能是造成此位置的编译器错误的原因:
#ifdef WIN32
#include <windows.h>
#include <winsock2.h>
#define sleep(x) Sleep(x*1000)
因此您可以预处理源文件 (cpp -E libusbmuxd.c >libusbmuxd_pp.c
) 并检查结果。 (尝试编译它以找到错误的新行号)。
*) 顺便说一句,我在 MinGW 中的 cpp
给了我这个:
D:\test>cpp -E test.c >test2.c
In file included from test.c:45:0:
d:\mingw\x86_64-w64-mingw32\include\winsock2.h:15:2: warning: #warning Please include winsock2.h before windows.h [-Wcpp]
#warning Please include winsock2.h before windows.h
^
所以也许交换源代码中的 #include
指令就可以解决这个问题。