在没有makefile的情况下如何设置“ make”命令?

威廉·C

在ubuntu中使用C语言学习编程的新手例如,使用hello.c从一些视频教程中,我看到老师可以使用“ make hello”来编译hello.c,而无需在当前目录中设置Makefile,并且命令类似于

bash$ make hello 
gcc -g -Wall hello.c -o hello

我尝试在自己的ubuntu 14.04上使用make,我安装了build-essential并尝试了相同的hello.c

bash$ make hello
cc hello.c -o hello

就像上面一样我如何进行更改以获取-g,-Wall或任何其他标志?

洪扎兰斯

你需要什么

其工作方式make通过已知配方源头产生目标

当您编写自己的Makefile时,可以为其提供配方,但是,make可以使用内部配方。您可以按列出它们make -p

食谱之一讲述了make如何从<something> .c中产生<something>。运行时make hellomake检查如何产生hello,发现有一个hello.c文件,并且知道如何hello.c产生hello-使用该内部规则。

现在规则看起来像这样。

%: %.c
#  recipe to execute (built-in):
    $(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@

重要的部分$(LINK.c)看起来像这样

LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

您现在不需要了解语法,重要的是,您make hello将被转换成(省略了一些未使用的变量)

$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) hello.c -o hello

现在可以通过以下方式设置CCCFLAGSCPPFLAGSLDFLAGSmake(在您的情况下,CC设置为“ cc”,其余的未设置),但是您可以使用环境变量覆盖它。你想要的是

CC=gcc
CFLAGS="-g -Wall"

如何获得

为此,只需运行一个命令:

CC=gcc CFLAGS="-g -Wall" make hello

为此,请运行一个会话(直到关闭终端)

export CC=gcc
export CFLAGS="-g -Wall"

然后随心所欲make hellomake whatever随心所欲。


要永久执行此操作,请在.profile文件中设置这些变量(打开~/.profile(如果不存在则创建),然后添加

export CC=gcc
export CFLAGS="-g -Wall"

做到这一点。或者只是跑

echo 'export CC=gcc' >> ~/.profile
echo 'export CFLAGS="-g -Wall"' >> ~/.profile

在这两种情况下,您都需要source ~/.profile或启动一个新的终端。从此以后它将快乐地工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何让Make在没有自己的Makefile的情况下查找和递归子目录?

来自分类Dev

如何在没有X会话的情况下通过命令行编辑KDE暂停设置?

来自分类Dev

如何在不修改makefile的情况下让gmake输出所有命令的返回码

来自分类Dev

如何在没有密码的情况下远程执行ssh命令和sudo命令

来自分类Dev

使用makefile进行编译时,如何在不使用命令“ make clean”的情况下清除目标文件?

来自分类Dev

如何在没有嵌套订阅的情况下订阅命令执行信号的完成?

来自分类Dev

如何在没有cURL命令行的情况下安装Composer?

来自分类Dev

如何在没有密码的情况下运行sudo命令?

来自分类Dev

Hubot如何在没有任何命令的情况下正常运行功能?

来自分类Dev

如何在没有密码的情况下运行sudo命令?

来自分类Dev

如何在没有命令的情况下创建服务?

来自分类Dev

如何在没有命令行参数的情况下检查并引发错误

来自分类Dev

如何在没有附加引号的情况下将bash变量作为命令运行?

来自分类Dev

如何在没有cURL命令行的情况下安装Composer?

来自分类Dev

在没有任何命令的情况下,该变量如何变化?

来自分类Dev

如何在没有lhal和dmidecode命令的情况下获取Linux序列号?

来自分类Dev

如何在没有提示的情况下将密码传递给net use命令?

来自分类Dev

如何在没有密码的情况下运行特定的sudo命令?

来自分类Dev

如何在没有箭头键的情况下获取上一个命令

来自分类Dev

如何在没有'revert'或'rebase'命令的情况下从master删除提交?

来自分类Dev

如何在没有 sudo 的情况下从脚本调用超级用户命令

来自分类Dev

如何在bash上没有sudo命令的情况下获取内存信息

来自分类Dev

在 Kaa 中没有文件的情况下,如何使用 curl 命令发送通知?

来自分类Dev

在没有PRISM的情况下绑定命令

来自分类Dev

在没有提示的情况下使用gnuplot命令

来自分类Dev

如何在没有互联网连接的情况下安装“Make”?

来自分类Dev

在没有Make的情况下安装tarball?

来自分类Dev

“ make”命令如何定位makefile

来自分类Dev

如何在没有命令提示符的情况下运行Python服务器

Related 相关文章

  1. 1

    如何让Make在没有自己的Makefile的情况下查找和递归子目录?

  2. 2

    如何在没有X会话的情况下通过命令行编辑KDE暂停设置?

  3. 3

    如何在不修改makefile的情况下让gmake输出所有命令的返回码

  4. 4

    如何在没有密码的情况下远程执行ssh命令和sudo命令

  5. 5

    使用makefile进行编译时,如何在不使用命令“ make clean”的情况下清除目标文件?

  6. 6

    如何在没有嵌套订阅的情况下订阅命令执行信号的完成?

  7. 7

    如何在没有cURL命令行的情况下安装Composer?

  8. 8

    如何在没有密码的情况下运行sudo命令?

  9. 9

    Hubot如何在没有任何命令的情况下正常运行功能?

  10. 10

    如何在没有密码的情况下运行sudo命令?

  11. 11

    如何在没有命令的情况下创建服务?

  12. 12

    如何在没有命令行参数的情况下检查并引发错误

  13. 13

    如何在没有附加引号的情况下将bash变量作为命令运行?

  14. 14

    如何在没有cURL命令行的情况下安装Composer?

  15. 15

    在没有任何命令的情况下,该变量如何变化?

  16. 16

    如何在没有lhal和dmidecode命令的情况下获取Linux序列号?

  17. 17

    如何在没有提示的情况下将密码传递给net use命令?

  18. 18

    如何在没有密码的情况下运行特定的sudo命令?

  19. 19

    如何在没有箭头键的情况下获取上一个命令

  20. 20

    如何在没有'revert'或'rebase'命令的情况下从master删除提交?

  21. 21

    如何在没有 sudo 的情况下从脚本调用超级用户命令

  22. 22

    如何在bash上没有sudo命令的情况下获取内存信息

  23. 23

    在 Kaa 中没有文件的情况下,如何使用 curl 命令发送通知?

  24. 24

    在没有PRISM的情况下绑定命令

  25. 25

    在没有提示的情况下使用gnuplot命令

  26. 26

    如何在没有互联网连接的情况下安装“Make”?

  27. 27

    在没有Make的情况下安装tarball?

  28. 28

    “ make”命令如何定位makefile

  29. 29

    如何在没有命令提示符的情况下运行Python服务器

热门标签

归档