2013-05-30 7 views
0

x86_64 컴퓨터에 있습니다. 나는 그것의 메이크 파일을 사용하여 fortune를 구축하기 위해 노력하고있어,하지만 난은없는 문자에 대한 오류 얻을 : 내가 86 호스트의 구축하려고하면 나도 같은 오류가x86_64에서 "fortune"을 컴파일하는 중 오류가 발생했습니다.

cd fortune && make CC='gcc' \ 
        CFLAGS='-O2 -DFORTDIR="\"/usr/local/share/games/fortunes\"" -DOFFDIR="\"/usr/local/share/games/fortunes/off\"" -Wall -fomit-frame-pointer -pipe -DHAVE_REGEX_H -DBSD_REGEX -I../util' \ 
        LDFLAGS='-s' LIBS='' 
gcc -s -o fortune fortune.o 
ld: warning: option -s is obsolete and being ignored 
Undefined symbols for architecture x86_64: 
    "_re_comp", referenced from: 
     _getargs in fortune.o 
    "_re_exec", referenced from: 
     _matches_in_list in fortune.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make[1]: *** [fortune] Error 1 
make: *** [fortune-bin] Error 2 

을 :

terences-imac:fortune-mod-9708 MAU$ make host=x86 
cd fortune && make CC='gcc' \ 
        CFLAGS='-O2 -DFORTDIR="\"/usr/local/share/games/fortunes\"" -DOFFDIR="\"/usr/local/share/games/fortunes/off\"" -Wall -fomit-frame-pointer -pipe -DHAVE_REGEX_H -DBSD_REGEX -I../util' \ 
        LDFLAGS='-s' LIBS='' 
gcc -s -o fortune fortune.o 
ld: warning: option -s is obsolete and being ignored 
Undefined symbols for architecture x86_64: 
    "_re_comp", referenced from: 
     _getargs in fortune.o 
    "_re_exec", referenced from: 
     _matches_in_list in fortune.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 
make[1]: *** [fortune] Error 1 
make: *** [fortune-bin] Error 2` 
+0

무엇을 컴파일? "그것"은 무엇입니까? 운영 체제? 앱? 어떤 장치를 컴파일하고 있습니까? 귀하의 질문은 매우 모호합니다. – Coder404

+1

무엇을 컴파일하려고합니까? – Renan

+4

이것이 가장 큰 질문은 아니지만 사실상 모든 행에 "운"이라고 말합니다. –

답변

0

이를 사람들이 autotools에 관하여 불평 할 때, 당신은 그들을 무시해야만합니다. 자동 도구는 사용자의 사용자가이고 관리자의 사용자는이 아닙니다.

사용자가 구축 할 운영 체제를 지정하지 않았습니다. 그러나 누락 된 기호는 정규 표현식 구문 분석과 관련이 있으며 makefile에서 -DBSD_REGEX을 설정하고 있습니다. 문제의 일부가 될 수있는 BSD 시스템이 아니라면.

당신이 re_comp man 페이지를보고 한 후, GNU/리눅스를 사용하는 경우

, 나는 그것을 권장 참조 :
#define _REGEX_RE_COMP 

그래서 당신은 당신의 컴파일 라인에 -D_REGEX_RE_COMP을 추가하려고 할 수 있습니다. 당신의 태그 "OSX에"및 호스트 이름 "terences-아이맥 '로 가고, 맥 OS X에 컴파일하려고 분명히

+0

그건 내게 아무 의미도 없으므로 질문을하십시오. – MadScientist

+0

BSD 정규식을 사용하고 있습니다. – rake

+0

오류로 인해 BSD 정규식을 사용하고 있음이 분명합니다. 그것은 누락 된 정보가 아닙니다. 질문은, BSD 시스템에서 컴파일하고 있습니까? 또는 GNU/Linux와 같은 다른 종류의 시스템에서? 내가 제안한대로'-D_REGEX_RE_COMP' 플래그를 추가하려고 했습니까? 작동 했나요? – MadScientist

2

...

이 는 지금까지 내가 아는 한, 원래 재산 ( ftp://metalab.unc.edu/pub/Linux/games/amusements/fortune/) 인

Linux 용입니다. 일부 BSD 포트가 있습니다

, 당신은 확인할 수 있습니다 : 10.9 OSX에 나를 위해 노력하고 있습니다 https://github.com/ArrantSquid/Fortune-OSX (그 소리 모든를)

+0

나는 그것을 추측했다. 그러나 makefile은 BSD 정규 표현식에 대해 언급했고, 다른 Mac *에서 작동하는 BSD에서 작동한다면 가정했습니다. – rake

관련 문제