当前位置: 技术问答>linux和unix
★★★ 简单问题:如何使用MAKEFILE 在LINUX编译VC代码? ★★★
来源: 互联网 发布时间:2015-03-25
本文导语: 初次接触LINUX,请指教: 创建一个名字为test的win32 consile application VC程序 增加一个名字为file1.cpp文件(简单地写一个函数,在MAIN中调用) 把上面的工程复制到RED HAT 7.2 (homelys) 中 请问,如何使用makefile使得上面...
初次接触LINUX,请指教:
创建一个名字为test的win32 consile application VC程序
增加一个名字为file1.cpp文件(简单地写一个函数,在MAIN中调用)
把上面的工程复制到RED HAT 7.2 (homelys) 中
请问,如何使用makefile使得上面的VC程序可以在LINUX下编译执行?
刚开始接触,提问不专业的地方,请见谅,可能的话,请说详细些,十分感谢...
创建一个名字为test的win32 consile application VC程序
增加一个名字为file1.cpp文件(简单地写一个函数,在MAIN中调用)
把上面的工程复制到RED HAT 7.2 (homelys) 中
请问,如何使用makefile使得上面的VC程序可以在LINUX下编译执行?
刚开始接触,提问不专业的地方,请见谅,可能的话,请说详细些,十分感谢...
|
只有一个文件吗?
可以直接用g++:
g++ -o file1 file1.cpp
-o是指定生成文件的文件名。
如果有多个文件,想编Makefile,用以下格式:
file1:file1_1.cpp file1_2.cpp file1_3.cpp
(跳格键Tab,不能用空格代替)g++ -o file1 file1_1.cpp file1_2.cpp file1_3.cpp
更多的使用方法可以参考下文:
在开发大系统时,经常要将程序划分为许多模块.各个模块之间存在着各种各样的依赖关系,在 UNIX 中通常使用 Makefile来管理 .Makefile其实很复杂,我向大家推荐由Stallman写的手册,那里有最详尽的描述.这里只想说一些最常用的功能.
先举一个例子:
有a.c b.c两个程序.
a.c
extern void p(char *);
main()
{
p("hello world");
}
b.c
#include
void p(char *str)
{
printf("%sn",str);
}
Makefile
hello:a.c b.c
gcc a.c b.c -o hello
----
这里是一个Tab(注意一定要有一个Tab)
执行make
gcc a.c b.c -o hello
产生一个叫hello的可执行程序.
Makefile时由规则来组成的,每一条规则都有三部分组成:目标(object),依赖(dependency)和命令(command).在上面的例子中, Makefile只有一条规则,其目标为hello,期依赖为a.c b.c,其命令为gcc a.c b.c -o hello.
依赖可以是另一条规则的目标,也可以是文件.每一条规则被这样处理.如目标是一个文件是:当它的依赖是文件时,如果依赖的时间比目标要新, 则运行规则所包含的命令来更新目标; 如果依赖是另一个目标则用同样的方法先来处理这个目标.如目标不是一个存在的文件时,则一定执行.
例如:
Makefile
hello:a.c b.o
gcc a.c b.o -o hello
b.o:b.c
gcc b.c -c
当运行 make时,可以接一目标名作为参数,表示要处理改目标.如没有参数,则处理第一个目标.对上一个例子执行 make ,则是处理hello这个目标. hello依赖于文件a.c和另一个目标 b.o,则先去处理b.o,调用gcc b.c -c来更新b.o,之后返回,调用gcc a.c b.o -o hello 来更新hello.
定义变量:
在makefile中可以定义自己的变量,例如:
CC = gcc
hello:a.c b.c
$(CC) a.c b.c
特殊变量:
$@ 目标的名字
$
可以直接用g++:
g++ -o file1 file1.cpp
-o是指定生成文件的文件名。
如果有多个文件,想编Makefile,用以下格式:
file1:file1_1.cpp file1_2.cpp file1_3.cpp
(跳格键Tab,不能用空格代替)g++ -o file1 file1_1.cpp file1_2.cpp file1_3.cpp
更多的使用方法可以参考下文:
在开发大系统时,经常要将程序划分为许多模块.各个模块之间存在着各种各样的依赖关系,在 UNIX 中通常使用 Makefile来管理 .Makefile其实很复杂,我向大家推荐由Stallman写的手册,那里有最详尽的描述.这里只想说一些最常用的功能.
先举一个例子:
有a.c b.c两个程序.
a.c
extern void p(char *);
main()
{
p("hello world");
}
b.c
#include
void p(char *str)
{
printf("%sn",str);
}
Makefile
hello:a.c b.c
gcc a.c b.c -o hello
----
这里是一个Tab(注意一定要有一个Tab)
执行make
gcc a.c b.c -o hello
产生一个叫hello的可执行程序.
Makefile时由规则来组成的,每一条规则都有三部分组成:目标(object),依赖(dependency)和命令(command).在上面的例子中, Makefile只有一条规则,其目标为hello,期依赖为a.c b.c,其命令为gcc a.c b.c -o hello.
依赖可以是另一条规则的目标,也可以是文件.每一条规则被这样处理.如目标是一个文件是:当它的依赖是文件时,如果依赖的时间比目标要新, 则运行规则所包含的命令来更新目标; 如果依赖是另一个目标则用同样的方法先来处理这个目标.如目标不是一个存在的文件时,则一定执行.
例如:
Makefile
hello:a.c b.o
gcc a.c b.o -o hello
b.o:b.c
gcc b.c -c
当运行 make时,可以接一目标名作为参数,表示要处理改目标.如没有参数,则处理第一个目标.对上一个例子执行 make ,则是处理hello这个目标. hello依赖于文件a.c和另一个目标 b.o,则先去处理b.o,调用gcc b.c -c来更新b.o,之后返回,调用gcc a.c b.o -o hello 来更新hello.
定义变量:
在makefile中可以定义自己的变量,例如:
CC = gcc
hello:a.c b.c
$(CC) a.c b.c
特殊变量:
$@ 目标的名字
$