我们需要使用Makefile将所有内容整合到我们的项目中,但我们的教授从未向我们展示过如何操作.
我只有一个档案a3driver.cpp.驱动程序从某个位置导入类"/user/cse232/Examples/example32.sequence.cpp".
就是这样,其他一切都包含在内.cpp.
我如何制作一个简单的Makefile来创建一个名为a3a.exe?的可执行文件?
我有包含文件的文件夹:

如何运行makefile?在控制台中我键入:make并且它表示没有找到makefile.
我想编译最简单的GTK程序.我可以使用命令行编译它:
gcc $(pkg-config --cflags --libs gtk+-3.0) main.c -o main.o
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用Make它不起作用:
CFLAGS=-g -Wall -Wextra $(pkg-config --cflags)
LDFLAGS=$(pkg-config --libs gtk+-3.0)
CC=gcc
SOURCES=$(wildcard *.c)
EXECUTABLES=$(patsubst %.c,%,$(SOURCES))
all: $(EXECUTABLES)
Run Code Online (Sandbox Code Playgroud)
它告诉我这个:
gcc -g -Wall -Wextra -c -o main.o main.c
main.c:1:21: fatal error: gtk/gtk.h: No such file or directory
#include <gtk/gtk.h>
^
compilation terminated.
<builtin>: recipe for target 'main.o' failed
make: *** [main.o] Error 1
Run Code Online (Sandbox Code Playgroud)
我在哪里将Make(pkg-config --cflags --libs gtk + -3.0)粘贴在Makefile中以使其编译?
非常感谢你的帮助.
我最近安装了Ubuntu 11.10以及CodeBlocks IDE,我知道默认情况下我有gcc和std库.
我的问题是:
我是一个专门的Python开发人员,但我现在正在进行C编程,我开始时遇到了很多麻烦.我似乎无法掌握编译和包括库.此时,我只是确定了我需要的库,并尝试使用基本的"hello,world"应用程序编译它们,以确保我的环境设置可以进行实际的编程.
这是一个DBus后端应用程序,它将使用GIO连接到DBus.
#include <stdlib.h>
#include <gio/gio.h>
int
main (int argc, char *argv[])
{
printf("hello, world");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然后,我尝试编译:
~$ gcc main.c
main.c:2:21: fatal error: gio/gio.h: No such file or directory
#include <gio/gio.h>
Run Code Online (Sandbox Code Playgroud)
我相信,我已经安装了正确的软件包指示在这里,并在gio.h存在/usr/include/glib-2.0/gio/gio.h.
我在网上发现了一个向gcc添加搜索目录的命令,但是这导致了其他错误:
~$ gcc -I /usr/include/glib-2.0/ main.c
In file included from /usr/include/glib-2.0/glib/galloca.h:34:0,
from /usr/include/glib-2.0/glib.h:32,
from /usr/include/glib-2.0/gobject/gbinding.h:30,
from /usr/include/glib-2.0/glib-object.h:25,
from /usr/include/glib-2.0/gio/gioenums.h:30,
from /usr/include/glib-2.0/gio/giotypes.h:30,
from /usr/include/glib-2.0/gio/gio.h:28,
from main.c:2:
/usr/include/glib-2.0/glib/gtypes.h:34:24: fatal error: glibconfig.h: No such file or directory
#include <glibconfig.h>
^
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
必须有一些相对简单的方法才能设置一些选项/变量(makefile?)来自动包含必要的标题.我还将使用Eclipse-CDT或Anjuta作为IDE,并希望能够帮助修复导入路径(或者在C中调用它).
任何帮助是极大的赞赏.
我正在Linux OS上编写C和C++代码,我正在使用GCC.完成我的代码后,我想生成一个ELF文件.我只能生成"a.out"文件而我不需要它.我怎样才能获得ELF文件?ELF文件出现的原因是什么?或者是否可以使用此程序生成此文件?
我最近搬到了linux,我遇到了使用gcc编译SDL C程序的问题.
我正在使用的命令:
gcc `sdl-config --cflags --libs` -o main main.c
Run Code Online (Sandbox Code Playgroud)
即使分离sdl-config标志:
gcc `sdl-config --cflags` -c main.c
gcc `sdl-config --libs` -o main main.o
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误:
/tmp/ccHYyjKd.o: In function `main':
main.c:(.text+0xe): undefined reference to `SDL_SetMainReady'
main.c:(.text+0x18): undefined reference to `SDL_Init'
main.c:(.text+0x31): undefined reference to `SDL_SetVideoMode'
main.c:(.text+0x54): undefined reference to `SDL_MapRGB'
main.c:(.text+0x6b): undefined reference to `SDL_FillRect'
main.c:(.text+0x77): undefined reference to `SDL_Flip'
main.c:(.text+0x83): undefined reference to `SDL_WaitEvent'
main.c:(.text+0x90): undefined reference to `SDL_Quit'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我非常简单的程序:
#include <stdio.h>
#include <stdlib.h>
#define …Run Code Online (Sandbox Code Playgroud) 我有一个使用GLib库的示例C项目。在该源代码中,它使用:
#include <glib.h>
Run Code Online (Sandbox Code Playgroud)
编译时,发现以下错误:“ Glib.h:没有这样的文件或文件夹”。我有谷歌,发现我应该安装这个库。所以我用那些命令:
apt-get install libgtk2.0-dev
apt-get install glade
Run Code Online (Sandbox Code Playgroud)
之后,我检查了一下并发现系统中已存在此头文件:usr/include/glib-2.0/glib.h但是,当我编译时,仍然遇到上面的问题。
所以我将包含行更改为:
#include <glib-2.0/glib.h>
Run Code Online (Sandbox Code Playgroud)
因此,在那之后,当我编译时,我在glib.hheader中遇到错误:
#ifndef __G_LIB_H__
#define __G_LIB_H__
#define __GLIB_H_INSIDE__
#include <glib/galloca.h>
#include <glib/garray.h>
// more code here
Run Code Online (Sandbox Code Playgroud)
glib/galloca.h : no such file or directory. 由于此错误在系统头文件中,因此我无法再进行修改并且仍然无法编译。
我不知道该如何解决。我读了一些帖子,他们更改了makefile。但是,由于我的项目是由IDE(CodeBlock)自动编译的,因此我无法真正编写Makefile,因此该方法不适合我。
请告诉我解决此问题的方法。
谢谢 :)
例如:
有3个源文件{ main.c test1.c test2.c}在目录中,命名的目录文件test3,并且有一个名为源文件test.c中的目录test3.
现在我想创建一个makefile来编译和链接这四个源文件.
这是我的Makefile:
# Cancel statement "CC=gcc"
src:=$(wildcard *.c) test3.c
obj:=$(patsubst %.c,%.o,$(src))
main:$(obj)
gcc -o main $(obj)
.PHONY:clean
clean:
rm *.o *~
Run Code Online (Sandbox Code Playgroud)
当我打电话make来编译它们时,我得到了这样的输出:
cc -c -o main.o main.c
cc -c -o test1.o test1.c
cc -c -o test2.o test2.c
cc -c -o test3.o test3/test3.c
gcc -o main main.o test1.o test2.o test3.o
Run Code Online (Sandbox Code Playgroud)
我知道'cc'在Linux中与'gcc'相关联.
我不明白为什么Make调用cc编译这四个源文件,但调用gcc链接目标文件?
c ×5
gcc ×5
linux ×4
makefile ×4
c++ ×2
gtk ×2
compilation ×1
elf ×1
executable ×1
file-format ×1
sdl ×1
ubuntu ×1
windows ×1