Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 编译错误";《财富》杂志;在x86_64上_Macos_Compilation_Makefile_Symbols - Fatal编程技术网

Macos 编译错误";《财富》杂志;在x86_64上

Macos 编译错误";《财富》杂志;在x86_64上,macos,compilation,makefile,symbols,Macos,Compilation,Makefile,Symbols,我在x86_64机器上。我试图使用它的makefile构建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

我在x86_64机器上。我试图使用它的makefile构建
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
如果尝试为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`

这就是为什么当人们抱怨自动工具时,你应该忽略它们。请记住,自动工具是为用户提供的,而不是为维护人员提供的

您不需要指定构建的操作系统。但是,缺少的符号与正则表达式解析有关,并且在makefile中设置了
-DBSD_REGEX
。如果您不在BSD系统上,这可能是问题的一部分

如果您使用的是GNU/Linux,那么查看
re\u comp
手册页,我发现它建议:

#define _REGEX_RE_COMP

因此,您可以尝试将
-D_REGEX\u RE_COMP
添加到您的编译行。

显然,您正在尝试在Mac OS X上编译,使用标签“osx”和主机名“terences imac”

据我所知,最初的fortune()只针对Linux


有一些BSD端口,你可以检查一下:它在OSX 10.9上对我起作用(叮当声和所有)

目前github上有一个Mac fortune端口的分支,它被改编为64位编译


编译什么?什么是“它”?操作系统?应用程序?你在什么设备上编译?你的问题很模糊。你想编译什么?我意识到这不是最重要的问题,但实际上每一行上都写着“财富”,这对我来说并不意味着什么,你的问题是对的。很明显,你是因为你的错误而使用BSD正则表达式的;这不是丢失的信息。问题是,您是否在BSD系统上编译?还是在GNU/Linux等其他类型的系统上?您是否按照我的建议尝试添加
-D\u REGEX\u RE\u COMP
标志?它起作用了吗?我得到了与我在回答中概述的相同的结果,添加/修改了这一行:CFLAGS='-O2-DFORTDIR=“\”/usr/local/share/games/fortunes\'-DOFFDIR=“\”/usr/local/share/games/fortunes/off“-Wall-fomit frame pointer-pipe-DHAVE_REGEX_H-D_REGEX_RE_COMP-I../util'\LDFLAGS='-s'LIBS='我不知道你为什么会遇到这个问题,但是你仍然没有弄清楚你在编译什么操作系统。Mac OSX(顺便说一下是基于/BSD的)。我猜到了。但是makefile提到了BSD正则表达式,我假设如果它在其他*BSD上工作,它将在mac上工作。