头文件:A.h

void test();

源文件:A.cpp

#include <iostream>
#include<thread>
#include<chrono>
#include<clocale> #include "boost/date_time/gregorian/gregorian.hpp"
#include "boost/date_time/posix_time/posix_time.hpp" using namespace std;
using namespace boost;
using namespace boost::gregorian;
using namespace boost::posix_time; void test()
{
date d = day_clock::local_day();
date_facet* dfacet = new date_facet("%Y年%m月%d日");
cout.imbue(locale(cout.getloc(), dfacet));
cout << d << endl; ptime tp = microsec_clock::local_time();
time_facet* tfacet = new time_facet("%Y年%m月%d日%H点%M分%S%F秒");
cout.imbue(locale(cout.getloc(), tfacet));
cout << tp << endl; }

main函数所在文件:test.cpp

#include "A.h"

int main()
{
test();
return 0;
}

手动编译:

一步编译:

g++ -o test.o A.cpp test.cpp -std=c++11

分开编译:

g++ -c A.cpp -std=c++11

g++ -c test.cpp

g++ A.o test.o -o test.out

运行:./test.out

采用makefile编译:

test:A.o test.o
g++ -o test A.o test.o
test.o:A.h test.cpp
g++ -c test.cpp
A.o:A.cpp
g++ -c A.cpp -std=c++11
clean:
rm test A.o test.o

引入变量:

objects=A.o test.o
test:$(objects)
g++ -o test $(objects)
test.o:A.h test.cpp
g++ -c test.cpp
A.o:A.cpp
g++ -c A.cpp -std=c++11
clean:
rm test $(objects)

自动推导:

objects=A.o test.o
test:$(objects)
g++ -o test $(objects)
test.o:A.h //省略编译命令和test.cpp
A.o:A.cpp
g++ -c A.cpp -std=c++11 //因为要使用c++11编译,所以显示给出,这两句。否则,和上一行可以省略
clean:
rm test $(objects)

1.附加库在链接阶段
2.不属于项目的头文件,如果没在默认寻找目录中,使用 -L指定,在依赖中不用写
3.使用mysql的库要apt-get install libmysql++-dev objects=main.o parsexml.o tinyxml2.o opfile.o opmysql.o stringex.o pathx.o timex.o logtoo_srvd_bin=../build/bin logtoo_srvd:$(objects)
g++ -o $(logtoo_srvd_bin)/logtoo_srvd $(objects) -L /usr/local/lib -lmysqlclient
rm $(objects) main.o:parsexml.h opmysql.h opfile.h stringex.h timex.h pathx.h main.cpp g++ -c main.cpp -I /usr/local/include -std=c++11 parsexml.o:tinyxml2.h parsexml.cpp g++ -c parsexml.cpp -std=c++11 tinyxml2.o: opfile.o:stringex.h timex.h opfile.cpp g++ -c opfile.cpp -std=c++11 opmysql.o:opmysql.cpp g++ -c opmysql.cpp -I /usr/local/include -std=c++11 stringex.o:stringex.cpp g++ -c stringex.cpp -std=c++11 pathx.o:pathx.cpp g++ -c pathx.cpp -std=c++11 timex.o: clean:
rm $(logtoo_srvd_bin)/logtoo_srvd

g++多文件编译的更多相关文章

  1. C++命令行多文件编译(g++)

    在刚开始学Java时用命令行进行编译代码.而C++一直在用IDE, 这次尝试下命令行编译.vs下也可以用cl.exe.link.exe等命令来进行编译 但这次是通过安装MinGW来学习命令编译,主要用 ...

  2. gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解

    摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C+ ...

  3. LINUX下文件编译

    body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...

  4. gcc/g++ 实战之编译的四个过程

    gcc和g++分别是GNU(一个开源组织)的c&c++编译器   对于.c后缀的文件,gcc把它当做是C程序,g++当做是C++程序:对于.cpp后缀的文件,gcc和g++都会当做c++程序. ...

  5. WebStorm ES6 语法支持设置和ES6语法的JS文件编译为ES5语法文件

    ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0.ES6的目标,是使得JavaS ...

  6. 用gulp把less文件编译成css文件

    第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...

  7. 嵌入式之:Linux下文件编译过程

    本文主要三个部分:1.GNU GCC简介 2.C/C++交叉编译器arm-elf-gcc 3.make文件,用于工程管理 部分一:GNU GCC简介: 该编译器基本功能: (1)输出预处理后的文件(展 ...

  8. Ubuntu的多文件编译以及c语言的数组、函数

    闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一 ...

  9. Day Tip:SharePoint 2013 *.ascx.g.cs文件

    在开发SharePoint2013的WebPart时,会产生一个*.ascx.g.cs文件.如果用TFS管理源代码经常遇到这个文件丢失.这让人很困扰,如果丢失了请在如下图中添加如下代码:       ...

随机推荐

  1. freeradius的https查询功能

    一.服务器要求 Radius服务器:centos6.6.ip.hostname.selinux  disabled.stop iptables freeradius版本:3.0.12 二.源码安装fr ...

  2. Tomcat结合nginx使用入门

    Nginx: Nginx是一款高性能,轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 特点是:占有内存少,并发能力强. 反向代理服务器: 反向代理(Reverse  ...

  3. Linux系统如何制作U盘启动盘更换系统

    进入这个网站balenaEtcher,直接下载可接

  4. 51Nod 1002:数塔取数问题(DP)

    1002 数塔取数问题  基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题  收藏  关注 一个高度为N的由正整数组成的三角形,从上走到下,求经过的数字和的最大值. 每 ...

  5. CTF密码学之摩斯密码

    通过不用的排列顺序来表达不用的英文字母,数字和标点符号,摩斯电码由.和_构成 字母 字符 电码符号 字符 电码符号 A ._ N _. B _... O _ _ _ C _._. P ._ _. D ...

  6. Anaconda+Tensorflow环境安装与配置

    转载请注明出处:http://www.cnblogs.com/willnote/p/6746499.html Anaconda安装 在清华大学 TUNA 镜像源选择对应的操作系统与所需的Python版 ...

  7. MySQL的innoDB锁机制以及死锁处理

    MySQL的nnoDB锁机制 InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许多不同之处,innodb正常的select ...

  8. redis sentinel 高可用(HA)方案部署,及python应用示例

    redis sentinel(哨兵)高可用集群的部署方法,并通过 python 程序实例讲解如何使用 redis sentinel 简介 介绍 redis sentinel(哨兵)集群的部署,配置一主 ...

  9. 【转】每天一个linux命令(49):at命令

    原文网址:http://www.cnblogs.com/peida/archive/2013/01/05/2846152.html 在windows系统中,windows提供了计划任务这一功能,在控制 ...

  10. oracle之 获取建表ddl语句

    第一种方法是使用工具,如:pl/sql developer,在[工具]--[导出用户对象]出现就可以得到建表脚本. 第二种方法是,sql语句. DBMS_METADATA.GET_DDL包可以得到数据 ...