2013-05-30 3 views
0

Я нахожусь на машине x86_64. Я пытаюсь построить fortune используя свой Makefile, но я получаю ошибку об отсутствующих символах:Ошибка компиляции «состояния» на x86_64

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 

я получаю ту же ошибку, если я пытаюсь построить для x86 хоста:

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

Compile что? Что это"? Операционная система? Приложение? На каком устройстве вы компилируете? Ваш вопрос очень расплывчатый. – Coder404

+1

Что вы пытаетесь скомпилировать? – Renan

+4

Я понимаю, что это был не самый большой вопрос, но он говорит «удача» практически по каждой строке. –

ответ

0

Этих поэтому, когда люди жалуются на autotools, вы должны их игнорировать. Помните, что autotools предназначены для пользователей , а не для сопровождающих.

Вы не указали, на какой операционной системе вы строите. Однако недостающие символы связаны с регулярным анализом регулярных выражений и в вашем файле makefile, который вы устанавливаете -DBSD_REGEX. Если вы не находитесь в системе BSD, которая может быть частью проблемы.

Если вы используете GNU/Linux, а затем смотрите на странице re_comp людей, я вижу, он рекомендует:

#define _REGEX_RE_COMP 

так что вы можете попробовать добавить -D_REGEX_RE_COMP в строку компиляции.

+0

Это ничего не значит для меня, WRT ваш вопрос. – MadScientist

+0

Я использую регулярное выражение BSD. – rake

+0

Понятно, что вы используете регулярные выражения BSD по своим ошибкам; это не недостающая информация. Вопрос в том, компилируете ли вы систему BSD? Или в какой-то другой системе, такой как GNU/Linux? Вы пытались добавить флаг '-D_REGEX_RE_COMP', как я предложил? Это сработало? – MadScientist

2

Очевидно ваш пытаются собрать на Mac OS X, идя по тегу «OSX» и имя хоста «terences-ИАЦ» ...

Насколько я знаю, оригинальное состояние (ftp://metalab.unc.edu/pub/Linux/games/amusements/fortune/) является предназначен только для Linux.

Есть некоторые BSD портов, вы можете проверить: https://github.com/ArrantSquid/Fortune-OSX, который работает для меня на OSX 10.9 (лязг и все)

+0

Я как бы догадался, что. Но тогда makefile упоминал регулярное выражение BSD, и я предположил, что если он работает на других * BSD, он будет работать на mac. – rake

Смежные вопросы