【发布时间】:2015-03-14 13:51:02
【问题描述】:
我正在构建 Syslinux,并且我想要一个不同的 CC 用于一个特定的目录。我不能只用该文件的特殊参数调用make,而不是修补Makefile?我还没想好怎么做。
当我正常运行make 时,最后几行是:
make -r -C lzo SRC="/syslinux-6.03/lzo" OBJ="/syslinux-6.03/bios/lzo" \
-f /syslinux-6.03/lzo/Makefile all
make[3]: Entering directory '/syslinux-6.03/bios/lzo'
gcc -o prepcore prepcore.o lzo.a
但如果我 cd 进入 bios/lzo 并运行 make prepcore,它就不起作用,可能是因为它需要父目录 Makefiles 中的一些环境。错误信息是:
make: Entering directory '/syslinux-6.03/lzo'
/syslinux-6.03/lzo/Makefile:14: /build.mk: No such file or directory
make: *** No rule to make target '/build.mk'. Stop.
make: Leaving directory '/syslinux-6.03/lzo'
所以我的问题是,告诉 make“对于当前目录树,找到 <file> 的目标并制作它”的正确方法是什么?
【问题讨论】:
-
您的问题的答案是,您必须找到目标的名称并将其传递给make。然后 make 将构建该目标。但是,你已经知道了,因为你描述了运行
make prepcore;这里prepcore是您要求make 构建的目标的名称。所以我不明白你的问题。 -
@MadScientist 就像我说的那样,它不起作用。它试图在没有
lzo.a的情况下进行链接,这会导致无法解析的符号。 -
您问的是如何从命令行构建特定目标。我告诉过你你是怎么做到的。您似乎真正想知道的是,“我应该调用我的 makefile 环境中的哪个目标以使链接正常工作”,当然我们无法告诉您,因为我们没有您的 makefile,所以我们不知道存在什么目标或它们做什么。您必须查看您的 makefile 并找到正确的目标,然后运行
make并给出该目标名称。 -
syslinux makefile 需要变量
SRC、OBJ和MAKEDIR。试试make -r -C lzo SRC="/path/to/syslinux-6.03/lzo" OBJ="/path/to/syslinux-6.03/bios/lzo" MAKEDIR="/path/to/syslinux-6.03/mk" -f /path/to/syslinux-6.03/lzo/Makefile prepcore(cwd 应该是/path/to/syslinux-6.03)