gpt4 book ai didi

Makefile 中找不到命令错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:48:24 25 4
gpt4 key购买 nike

我正在尝试编写 Makefile。这是我写的。

CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot'
IDIR =../../../include
CFLAGS=-I$(IDIR)

LDIR =../../../../../../../../.debug/lib.out/public/
LIBS= -lmylib1 -lmylib2 -lmylib3

myexec: my_code.c
$(CC) $(CFLAGS) -o myexec my_code.c

运行时抛出错误

make: /buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot: Command not found

但是,当我在终端中手动运行编译命令时,它会起作用。

export CC='/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot'
$CC -I ../../../include -L ../../../../../../../../.debug/lib.out/public/ -lmylib1 -lmylib2 -lmylib3 -o myexec my_code.c

最佳答案

Makefile 中的定义更改为:

CC=/buildtools/toolchain/wr-x86/3.0FCScg/bin/i586-wrs-linux-gnu-gcc --sysroot=/buildtools/toolchain/wr-x86/3.0FCScg/sysroot

有了引号,make 使用整个定义作为要查找的可执行文件的名称。

当您在 Makefile 之外定义 CC 时它起作用的原因是处理引号的规则对于 shell 和 Makefile 是不同的。

一个更常见的约定是对所有编译标志使用CFLAGS。事实上,我强烈建议您将 Wall -W 添加到您的 CFLAGS 定义中。

关于库,您应该在 ccld 命令行上的源文件和目标文件之后展开 $LIBS

关于Makefile 中找不到命令错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com