2017-12-28 49 views
1

MinGW-w64를 사용하여 XZ Utils를 컴파일 하려다가 make./configure ing 후에 실행하려고 시도하면 sigset_t을 알 수없는 오류가 발생합니다.MinGW/MSYS2에서 XZ Utils를 컴파일 할 때 알 수없는 형식이 있습니다.

XZ Utils 버전은 5.2.3이고 MinGW-w64는 x86_64-7.2.0-posix-seh-rt_v5-rv1입니다.

In file included from common/common.h:17:0, 
       from common/common.c:13: 
../../src/common/mythread.h:138:33: error: unknown type name 'sigset_t' 
mythread_sigmask(int how, const sigset_t *restrict set, 
           ^~~~~~~~ 
../../src/common/mythread.h:139:3: error: unknown type name 'sigset_t'; did you mean '_sigset_t'? 
    sigset_t *restrict oset) 
    ^~~~~~~~ 
    _sigset_t 
../../src/common/mythread.h: In function 'mythread_create': 
../../src/common/mythread.h:158:2: error: unknown type name 'sigset_t'; did you mean '_sigset_t'? 
    sigset_t old; 
    ^~~~~~~~ 
    _sigset_t 
../../src/common/mythread.h:159:2: error: unknown type name 'sigset_t'; did you mean '_sigset_t'? 
    sigset_t all; 
    ^~~~~~~~ 
    _sigset_t 
../../src/common/mythread.h:160:2: warning: implicit declaration of function 'sigfillset' [-Wimplicit-function-declaration] 
    sigfillset(&all); 
    ^~~~~~~~~~ 
../../src/common/mythread.h:162:2: warning: implicit declaration of function 'mythread_sigmask'; did you mean 'pthread_sigmask'? [-Wimplicit-function-declaration] 
    mythread_sigmask(SIG_SETMASK, &all, &old); 
    ^~~~~~~~~~~~~~~~ 
    pthread_sigmask 

나는 gcc -E - <<< "#include <signal.h>" | grep sigset_t을 사용 sigset_t에 대한 signal.h을 확인하고 아무것도 찾을 수 없습니다. 이제 이것이 MinGW 제한인지 궁금해하고 있습니다. 그렇다면 주위에 방법이 있는지 궁금해했습니다.

답변

1

https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-headers/crt/sys/types.h#L110

#ifdef _POSIX 
typedef _sigset_t sigset_t; 
#endif 

이 _POSIX가 정의되어있을 경우에만 정의됩니다 나타납니다. 그것은 또한 sys/types.h 대 signal.h에 있습니다 ...

+0

아직도, MinGW에서 이것을 구축 할 수있는 방법이 있습니까? '-D_POSIX'를 추가하는 것만으로도 링커 오류가 발생하기 때문입니다. 제 말은, configure.ac에서 MinGW에 대한 참조를 보았습니다. 적어도 – FallenWarrior

+0

과 같은 방법으로 설치해야한다는 것을 발견했습니다. 분명히, XZ Utils는 MinGW 설치시 가지고있는'pthreads '를 가지고 있다고 가정하고, POSIX에 #define이 존재하는지 여부를 확인하지 않고'sigset_t'를 가지고 있음을 암시합니다. – FallenWarrior

+1

FIX :'MYTHREAD_POSIX'뿐만 아니라'HAVE_CLOCK_GETTIME'과'HAVE_DECL_CLOCK_MONOTIC'도 정의 해제해야했습니다. – FallenWarrior