2012-11-15 192 views
2

我对编译C代码不是很熟悉,特别是在使用MinGW/Msys的Windows上。这是我的问题。我正在尝试为Windows编译一个开源的M3u8分段器C代码。这些开源示例都涉及到linux,但是我已经成功地在Mac OSX机器上编译了代码,没有出现任何问题。Msys编译C代码

在Windows上的Msys上,./configure成功,但是一旦我完成Make,就会出现以下错误。它似乎与signal.h包含有关,但我不确定。任何洞察力将不胜感激。

make[1]: Entering directory `/home/install/m3u8-segmenter-master/tests' 
make[1]: Nothing to be done for `all'. 
make[1]: Leaving directory `/home/install/m3u8-segmenter-master/tests' 
make[1]: Entering directory `/home/install/m3u8-segmenter-master' 
gcc -DPACKAGE_NAME=\"m3u8-segmenter\" -DPACKAGE_TARNAME=\"m3u8-segmenter\" -DPAC 
KAGE_VERSION=\"0.3\" -DPACKAGE_STRING=\"m3u8-segmenter\ 0.3\" -DPACKAGE_BUGREPOR 
T=\"http://github.com/johnf/m3u8-segmenter/issues\" -DPACKAGE_URL=\"http://m3u8- 
segmenter.inodes.org\" -DPACKAGE=\"m3u8-segmenter\" -DVERSION=\"0.3\" -DSTDC_HEA 
DERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_ 
H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 - 
DHAVE_UNISTD_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SIGNAL_H=1 -DHAVE_GETOPT_H=1 -DHAVE 
_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_MEMMOVE=1 -DHAVE_MEMSET=1 -DHAVE_STRRCHR=1 -D 
HAVE_STRTOL=1 -I. -Ic:/msys/1.0/local/include -g -O2 -Wall -Wextra -Wdeclar 
ation-after-statement -Wpointer-arith -funsigned-char -Werror -Wall -Wstrict-pro 
totypes -Wmissing-prototypes -Waggregate-return -Wcast-align -Wcast-qual -Wneste 
d-externs -Wshadow -Wbad-function-cast -Wwrite-strings -MT m3u8_segmenter-m3u8- 
segmenter.o -MD -MP -MF .deps/m3u8_segmenter-m3u8-segmenter.Tpo -c -o m3u8_segme 
nter-m3u8-segmenter.o `test -f 'm3u8-segmenter.c' || echo './'`m3u8-segmenter.c 
m3u8-segmenter.c: In function 'main': 
m3u8-segmenter.c:212:22: error: storage size of 'act' isn't known 
m3u8-segmenter.c:413:5: error: implicit declaration of function 'sigaction' [-We 
rror=implicit-function-declaration] 
m3u8-segmenter.c:413:5: error: nested extern declaration of 'sigaction' [-Werror 
=nested-externs] 
m3u8-segmenter.c:212:22: error: unused variable 'act' [-Werror=unused-variable] 
cc1.exe: all warnings being treated as errors 

make[1]: *** [m3u8_segmenter-m3u8-segmenter.o] Error 1 
make[1]: Leaving directory `/home/install/m3u8-segmenter-master' 
make: *** [all-recursive] Error 1 
+0

如指出“我不是很熟悉编译的C代码,特别是在Windows” - 没有人能熟悉根据定义,不会感觉不好:P – 2012-11-15 19:33:46

+1

看起来像是某些平台特定的不兼容性。它很可能在signal.h之前包含头文件。包含文件的切换顺序也可能有所帮助。 – hyde

+0

@hyde:如果切换'#include'指令的顺序有帮助,可能表示头文件有问题。每个标题都应该包含它所需要的一切。 –

回答

0

为了模拟UNIX在Windows,Cygwin的比MSys的/ MinGW的更合适的this post