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 "../"的命令。

测试过后发现并不是没法访问,只是因为我gcc不太会,加上-I(大写i)即可

[root@root test]# gcc -I ../xx main.c blog.c -o main (blog.h文件在../xx/blog.h)
[root@root test]# ls
add.c  add.h  blog.c  main  main.c  Makefile  mul.c  mul.h  sub.c  sub.h  test.c
[root@root test]# ./main 
0
hello[root@root test]# 

确定好.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退出,上下按键都能用
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值