Makefile:@VAR@ 做什么?

Makefile : What does @VAR@ do?

我正在尝试从源构建 mod_wsgi。 但是当我尝试使用 "make" 时,我遇到了以下问题:

/bin/sh: APXS@: command not found
Makefile.in:31: recipe for target 'src/server/mod_wsgi.la' failed
make: *** [src/server/mod_wsgi.la] Error 127

我检查了 Makefile.in 文件,第 31 行是这个:

    $(APXS) -c $(CPPFLAGS) $(CFLAGS) $(SRCFILES) $(LDFLAGS) $(LDLIBS)

在第 15 行:

APXS = @APXS@

我检查过并安装了 apxs。 @APXS@ 应该做什么?给出apxs的路径? (比如 which apxs?)使用环境变量? 为什么它在这里不起作用?我正在构建一个 docker 容器,这可能是问题所在吗?

感谢您的帮助!

@VAR@ 表示法是 autoconf 特性,再加上文件 Makefile.in 中的 .in 后缀,这让我想到你没有./configure你的包裹。

配置我的包是什么意思?

autoconf 软件是一种编写 ./configure 脚本的工具,旨在检测它们 运行 正在使用的系统的特征:什么是这个程序的存放路径? 这些 C 头文件在哪里?这些问题通常由 ./configure 脚本回答。当它收集到答案后,它会通过处理文件列表导出答案——通常以 .in 结尾,就像你的 Makefile.in——并用它猜测的值替换 @VAR@ 占位符。

如何配置我的包裹?

我不知道你的软件包的详细信息,但根据你提供的信息,你应该尝试运行 ./configure脚本。使用 ./configure --help 查看其选项。如果这样的脚本不可用,请尝试使用包顶层目录中的 autoconf 命令生成它。