怎样使用 makeflags in makefile

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样使用 makeflags in makefile相关的知识,希望对你有一定的参考价值。

方法1
在makefile里面,一般指定了用什么编译器make工具,你必须要先弄清楚,还有一些其它的设置。如果只是使用makefile.exe这个文件就可以了。所以,只是一个批处理工具,需要什么样的环境才能编译。一般来说,以及需要那些库的支持。
make工具会根据makefile里面的信息来编译程序,用什么程序链接,make会出错的,你看看它C头文件和makefile里面的信息就应该能知道。

如果你没有相应的编译工具和库的支持,你拿到的c程序,那么只要有make

方法2
WinMain@16'不知道你在说什么,总的来说

undefined reference to '
是说你要编译的程序不是为Windows设计的

方法3
出现这样的连接错误的话,可能是因为你的源文件里指定的这个函数所在的库文件不存在,或者那个库文件存在但却不是为你的电脑的cpu结构build的。如果你确定你有那个库文件,那么你需要在连接的时候告诉连接器你需要依赖这个库文件,并且把路径告诉它。如果还不成功的话,那么就可能是你需要合适的cpu结构的那个相同的库文件,就是amd64,itanium,x86之类的。

方法4
以hello_test.c文件为例
1.创建程序
在linux控制台界面下 ,输入vi hello_test.c,输入i进入编辑插入模式,输入代码如下:
#include <stdio.h>
int main(void)

printf("Hello,Word!/n");
return 0;


用gcc编译程序
输入命令:gcc hello_test.c
输入命令:ls
显示:a.out hello_test.c
输入命令:./a.out //执行程序
2.使用Makefile
(1)创建Makefile,在hello_test.c所在目录输入 vi Makefile
(2)输入Makefile内容。在vi插入模式下输入:
hello_test : hello_test.c
gcc -o hello_test hello_test.c //特别注意 gcc前面不是空格,而是tab间隔符,否则会出现makefile:2: *** 遗漏分隔符错误
clean :
rm -fr hello_test *.o *.core
(3)输入make,屏幕输出 gcc -o hello_test hello_test.c,表示编译已经通过。
生成 hello_test。
参考技术A CPPFLAGS 应当是 编译选项,同你用的编译器有关。
makefile中的 $(CPPFLAGS) 是 宏 的值, 前面 应已 写了 CPPFLAGS 等于什么什么。

通常:
CFLAGS 只用于 C 预编处理,
CXXFLAGS 只用于 C++ 预编处理
CPPFLAGS 可以 用于 C 和 C++ 两者。本回答被提问者和网友采纳

使用 intltool 时如何将 Makefile.in.in 更改为 Makefile?

【中文标题】使用 intltool 时如何将 Makefile.in.in 更改为 Makefile?【英文标题】:How does Makefile.in.in get changed to Makefile when using intltool? 【发布时间】:2015-01-24 04:12:39 【问题描述】:

我有一个尝试国际化的 GTK 项目。我需要帮助了解如何将 intltool 包中的 po/Makefile.in.in 转换为 Makefile.in 然后转换为 Makefile 的基本工作流程。

我的直接问题是 Makefile.in 与 Makefile.in.in 相同。我得到了很多错误,例如未定义@SHELL@,显然是因为宏/变量没有被替换,以及@srcdir@ 和@topdir@ 等许多其他错误。如果我删除 Makefile.in,则没有从 Makefile.in.in 中创建它的规则。

我更大的问题是我不清楚在这种情况下整个工具链如何生成 Makefile。我在整个项目目录的其余部分都使用 aclocal/autoconf/configure,但是添加国际化的东西让我陷入了循环。感谢您的帮助。

【问题讨论】:

【参考方案1】:

我想我找到了自己问题的答案。以下链接有所帮助:

https://www.mail-archive.com/gtkmm-list@gnome.org/msg13483.html

主要是我不得不改变

AC_CONFIG_FILES(po/Makefile)

AC_CONFIG_FILES(po/Makefile.in)

并使用该站点上建议的 autogen.sh 脚本,而不是我正在使用的脚本,即:

#!/bin/sh

mkdir -p m4

echo "Creating m4/aclocal.m4 ..."
test -r m4/aclocal.m4 || touch m4/aclocal.m4

echo "Running glib-gettextize... Ignore non-fatal messages."
echo "no" | glib-gettextize --force --copy

echo "Making m4/aclocal.m4 writable ..."
test -r m4/aclocal.m4 && chmod u+w m4/aclocal.m4

echo "Running intltoolize..."
intltoolize --force --copy --automake || return 1

echo "Running aclocal..."
aclocal || return 1

echo "Running libtoolize..."
libtoolize || return 1

echo "Running autoheader..."
autoheader || return 1

echo "Running autoconf..."
autoconf || return 1

echo "Running automake..."
automake --add-missing || return 1

echo "You should now run ./configure..."

【讨论】:

以上是关于怎样使用 makeflags in makefile的主要内容,如果未能解决你的问题,请参考以下文章

uboot主Makefile之2——silent builds静默编译

BSP开发之kernelLinux启动流程以及编译流程分析

BSP开发之kernelLinux启动流程以及编译流程分析

BSP开发之kernelLinux启动流程以及编译流程分析

Makefile没有针对目标的规则

U-Boot顶层Makefile介绍(*)