① gcc 编译多文件批处理文件
CC= gcc
CFLAGS= -O2 -g -Wall
LIBS= -lsqlite3
LIB_DIR= -L../sqlite3/lib/
INCLUD_DIR= -I../sqlite3/include
test:test.c
$(CC) $^ $(CFLAGS) -o $@ \
$(LIBS) $(INCLUD_DIR) $(LIB_DIR)
.PHONY:clean
clean:
-rm test
1.解释:编译器是gcc(可选)
2.CFLAGS= -O2 -g -Wall 是gcc的参数 -O2优化,-g 加调试信息, -Wall(警告)---CFLAGS项可选
3.LIBS= -lsqlite3(库名)有就写没有就不要写,一般的库编译器自己去系统找,特殊的库要自己加。如:pthread线程库。
4.LIB_DIR= -L../sqlite3/lib/,指定库的路径
5.INCLUD_DIR= -I../sqlite3/include,指定头文件的路径.(I是大写的i)
6.
test:test.c
$(CC) $^ $(CFLAGS) -o $@ \
$(LIBS) $(INCLUD_DIR) $(LIB_DIR)
展开就是:gcc -O2 -g -Wall -o test -L../sqlite3/lib/ -I../sqlite3/include
针对你的问题:
先进你的A文件夹
all:test.o
cc *.o -I../B/include/(写绝对路径)
%*.o:%*.c
② 关于gcc编译器,在控制台写*.cpp编译多个cpp会报错
根据报错信息,是因为“g++ -c *.cpp”这条指令的通配符串“*.cpp”没有展开所致。
根据验证,当执行“g++ -c *.cpp”这条指令时,当前目录比如testcomb下没有后缀名为cpp的文件,“*.cpp”就不会展开,就会报错。
---
如上图所示,当前目录下没有.c文件,报错与问题中的一致。
③ gcc多文件编译 三个文件:tree.c tree_fun.c tree.h 我怎么把他们编译成一个可执行文件
写一个Makefile文件,如下:
SOURCE = tree.c tree_fun.c
DEST = main
GCC = gcc
FLAGS =
all:
$(GCC) $(SOURCE) $(FLAGS) -o $(DEST)
这样就可以直接make,可以编译这三个文件了,编译成的可执行文件是main
④ c语言在gcc中两个文件同时编译
就是写一个main函数测试写的函数功能是否正确。
新建一个文件test.c,内容如下
#include<stdio.h>
void main()
{
char str[]={"I Am A Student!\n"};
char ch='S';
int count=0;
printf("%d\n",count_standard(str, char ch, count));
}
编译:gcc test.c 2.c
执行:./a.out
⑤ gcc 怎样编译几个c++文件呀
把mingw-make.exe改成make.exe
4 ~5 g( M) z/ F& m1 ^$ R* x) v
& [# ?9 `$ i# S) r9 _$ S你能在command line里面运行make吗
& E- y$ p/ E! N# ]) \) M% K' y4 M" h8 m J' P# a5 p
path里面加安装路径/bin了吗; a& m7 f M( H% C' L+ L
还要加WXWIN环境变量! H. Y/ x6 a1 ^+ G7 C* v( o
" q2 | w, T1 c" S, K; `WXWIN就像java_home一样. @8 C3 N+ t Z! G; K7 l# V: w6 F
d( O) J. X' y1 J$ e, ~ u2 q- L4 ]环境变量你知道吗?: n- y7 m! f1 H6 F& h, P
% d$ o5 ?8 U( P( u" L
环境变量是系统的变量,程序运行的时候会存在在环境里可以用来使用,WXWIN就是每当eclipse使用make都会在这个变量下的路径查找,之类的云云
⑥ 请问如何使用gcc编译多个文件
问题1:gcc a.c main.c -o a.out
问题2:可要可不要,视具体情形而定
问题3:没有必要
⑦ 用 gcc 如何编译多个 c 文件
已经cd到ds目录,用如下命令
gcc -I./a -I./b a.c b.c main.c -o main
⑧ gcc如何编译多文件
你这里有几处问题。
fun.h 加头文件卫士,头文件中声明全局变量要用static修饰。
#ifndefFUN_H
#defineFUN_H
staticintg=10;
voidfun();
#endif
其他文件中引用这个文件的变量,extern int g;
mian.c
#include<stdio.h>
#include"fun.h"
externintg;
voidmain()
{
printf("%d ",g++);
fun();
}
⑨ c多个文件如何编译
关于整个 C 语言中的主函数 main( ) 如何调用相关的头文件(*.h)、以及调用其它独立的模块(*.c)的方法,关键在于对于如何编写 makefile 文件的真正理解、以及真正掌握编写规则。
由于我已经有很多年没有编写过 C 语言源程序、以及编写 makefile 文件了,但是可以大概给你提供一个思路就是:
下面的文本文件假设以 my_makefile 为例,编译环境为 Linux 系统,C 语言编译器为 gcc。
但是在这里注意一点:我的 my_makefile 文件中的注释语句是否是分号进行注释,我已经不太记得了,这个需要自己再参考一下。
另外就是:对源文件(*.c)、以及生成可执行文件(my_runfile)在 my_makefile 文件中的前后次序,我也记不清了,仅供参考。
myprog1.o: myprog1.c ; myprog1.o 的生成依赖于 myprog1.c 这个源程序
gcc -c myprog1.c ; 使用 Linux 系统的 C 语言编译器对 myprog1.c 只编译、不链接
myprog2.o: myprog2.c ; myprog2.o 的生成依赖于 myprog2.c 这个源程序
gcc -c myprog2.c ;使用 Linux 系统的 C 语言编译器对 myprog2.c 只编译、不链接
my_runfile: myprog1.o myprog2.o ; 可执行文件 my_runfile 的生成依赖于 myprog1.o、myprog2.o 这两个目标文件
gcc -o my_runfile myprog1.o myprog2.o ; 使用 cc 的 -o 选项生成用户自定义的可执行文件:my_runfile,如果不指定 -o 选项,cc 编译器生成的缺省可执行文件名为:a.out
运行命令为:
$make -f my_makefile (使用 -f 选项代替缺省的 make 文件名 makefile)
⑩ gcc 编译c的多文件程序问题
不怕麻烦的话呢,可以调整#include结构来让各c文件相连。。
建议呢,把类型与函数的声明整理到特定的.h文件中,然后用#ifndef来使其只被包含一次,然后,在用到其它文件中实现的函数的时候将相应的.h文件include进来就好。这样呢,编译的时候可以单个文件逐一编译:
gcc -c main.c -o main.o
gcc -c del.c -o del.o
gcc -c insert.c -o insert.o
参数-c意思是只编译不连接,-o是名命输出文件。
全部编译成.o文件无误后,再将所有的.o文件相连:
gcc main.o del.o insert.o -o prog
就可以生成prog了。
然后举个例子说明处理.h文件:
比如这个create.c。里面定义了一个struct和一个函数。那么就可以写create.h如下:
#ifndef __CREATE_H__
#define __CREATE_H__
struct student
{
long num ;
float score;
struct student *next;
};
struct student *creat(void);
#endif
然后呢,因为student这个struct在这个.h文件里已经声明了,所以create.c里只要写#include "create.h",而在用到这个struct或者这个函数的场合,也只要这样简单一句就可以了。而.h文件开头的#ifndef可以保证同一个h文件不会被多次包含。当然,如果编译器支持的话,用#pragma once也许会比#ifndef更省事一些。
以上。