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

标签: CC Linux 程序设计
9人阅读 评论(0) 收藏 举报
分类:

在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退出,上下按键都能用
查看评论

两个简单的makefile的实现,编译当前目录下所有的.c文件

在网上找到的一个非常好的makefile文件,可以编译本文件夹下的所有.c文件,之需要定义输出文件名,不需要指定main文件的文件名,非常的好,非常的方便,注释也很详细,收藏并分享给需要的人。 ###...
  • andylauren
  • andylauren
  • 2016-11-18 22:02:12
  • 2903

Linux编译多个不同目录下的文件以及静态库、动态库的使用

先看两篇博文,作为基础知识。如果对C/C++编译链接过程都了解的话,可以跳过不看。 http://www.firedragonpzy.com.cn/index.php/archives/2556 ht...
  • luotuo44
  • luotuo44
  • 2013-11-26 21:33:07
  • 42047

在Linux 下编译链接多个源文件

add.c 的内容 int Add(int a,int b) {    int result;    result=a+b;    return  result; }   ...
  • e_wsq
  • e_wsq
  • 2014-11-07 16:45:12
  • 1612

多文件,多头文件时gcc与makefile的编写经验

经常在一个项目中包含多个.c源文件,而且一个.c源文件包含了一堆的头文件,这种情况下如何编写makefile,使得能成功编译整个项目?本博文对这些问题提出自己浅析的理解。涉及到对gcc命令使用与编译流...
  • GMPY_Tiger
  • GMPY_Tiger
  • 2016-03-16 13:49:29
  • 8381

Linux下C编程入门(.h文件,.c文件,以及多文件调用的方式)

1、首先,以Ubuntu 64-bit操作系统下为例 图中的sudo su表示的是快速进入到root管理员下。这里的密码默认的是安装后的Ubunto操作系统中自定义的用户名的密码,此处以用户toto...
  • toto1297488504
  • toto1297488504
  • 2014-06-26 23:47:36
  • 3963

linux c的连接库和怎么同时编译多个源程序

1、理解库函数       库函数有头文件和库文件(so 或者 a)的集合      1)头文件的默认目录 /usr/include      2)库文件的默认目录       ...
  • u011068702
  • u011068702
  • 2017-01-07 10:13:07
  • 2046

Makefile自动编译目录下的所有.C文件

自动编译目录下的所有.C文件的Makefile脚本CC=gcc CFLAGS_WARN = -Wall DEFINE = INCLUDE = -I. SOURCES = $(wildcard *...
  • fang437385323
  • fang437385323
  • 2016-06-01 17:56:46
  • 572

linux c/c++ 读取指定目录下的文件名

#include #include /*struct dirent { long d_ino; // inode number 索引节点号 off_t d_off; // offset...
  • libin66
  • libin66
  • 2016-11-26 20:17:42
  • 2157

C/C++遍历目录下的所有文件(Windows/Linux篇,超详细)

本文可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6815924.html。   前面的一篇文章我们讲了用Windows API遍历一...
  • xiapang009
  • xiapang009
  • 2017-10-09 10:31:34
  • 328

Linux下如何编译、运行C、C++程序?

Linux   中最重要的软件开发工具是   GCC。GCC   是   GNU   的   C   和   C++   编译器。实际上,GCC   能够编译三种:C、C++   ...
  • e_wsq
  • e_wsq
  • 2014-11-07 16:09:28
  • 5683
    个人资料
    等级:
    访问量: 625
    积分: 66
    排名: 160万+
    文章存档