2012-11-15 257 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