Linux下如何编译有多个文件(包括不同目录下的.c/.h文件)的C/C++程序

在Linux下要编译一个C/C++程序,首先要知道包含目录的作用,对C/C++有了解的就会知道,#include是包含头文件所用的,也就说说部分类、函数、或者变量声明就在其中。而#include宏定义又有两种:

#include""和#include <>

这两个语句的差别在于查找文件的方式,#include""是在当前目录下查找,若是找不到再跳到系统目录,而#include<>则是直接在系统目录查找,而不会去当前目录寻找。(若是在系统中而#include <>找不到则可以通过vi /etc/profile 添加环境变量,找到文件所在目录,并且在profile下添加类似如下的语句export PATH = "$PATH: /opt/bin",记住,编辑完之后必须使用source /etc/profile  命令让你的编辑立马生效,否则你就要等到重启之后才能生效了

由于暂时不会写makefile文件,所以我们就只好在.c/.cpp文件的宏定义中添加头文件,记得要带上目录,如

#include "inc/opencv.h" 或是 #include "opencv.h"

#include后面的路径是相对你.c/.cpp文件而言的,同时要记住#include ""是不能访问上一层目录的,也就是不能使用类似#include "../"的命令。

确定好.c/.cpp/.h/.hpp文件所在目录以及#include宏定义没有错误之后,就可以直接使用命令进行编译,如

root@root#ls
inc  main  Sales_item.cpp
root@root#ls inc/
Sales_item.h
root@root#cat Sales_item.cpp 
#include <iostream>
#include "inc/Sales_item.h"
int main()
{
	Sales_item item1,item2;
	std::cin>>item1>>item2;
	std::cout<<item1 + item2 <<std::endl;
	return 0;
}
root@root#g++ Sales_item.cpp -o my_execute_name
root@root#ls
inc  main  my_execute_name  Sales_item.cpp

C++使用g++ youfilename1.c youfilename2.c -o executefilename

C则将g++换成gcc就好,-o是指定输出文件名,可以添加多个.c/.cpp文件。

如果你的程序代码中没有#include 宏定义,则可以使用 g++ file.c -l inc/file.h -o executefilename

-l参数后加的是文件路径以及文件名。如果想要对g++、gcc有更多的了解,可以使用

root@root#man gcc
man gcc 空格换页,q退出,上下按键都能用
阅读更多

没有更多推荐了,返回首页