g++多文件编译
头文件: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++多文件编译的更多相关文章
- C++命令行多文件编译(g++)
在刚开始学Java时用命令行进行编译代码.而C++一直在用IDE, 这次尝试下命令行编译.vs下也可以用cl.exe.link.exe等命令来进行编译 但这次是通过安装MinGW来学习命令编译,主要用 ...
- gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
摘自http://blog.csdn.net/elfprincexu/article/details/45043971 gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解 C和C+ ...
- LINUX下文件编译
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- gcc/g++ 实战之编译的四个过程
gcc和g++分别是GNU(一个开源组织)的c&c++编译器 对于.c后缀的文件,gcc把它当做是C程序,g++当做是C++程序:对于.cpp后缀的文件,gcc和g++都会当做c++程序. ...
- WebStorm ES6 语法支持设置和ES6语法的JS文件编译为ES5语法文件
ECMAScript 6是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0.ES6的目标,是使得JavaS ...
- 用gulp把less文件编译成css文件
第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...
- 嵌入式之:Linux下文件编译过程
本文主要三个部分:1.GNU GCC简介 2.C/C++交叉编译器arm-elf-gcc 3.make文件,用于工程管理 部分一:GNU GCC简介: 该编译器基本功能: (1)输出预处理后的文件(展 ...
- Ubuntu的多文件编译以及c语言的数组、函数
闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一 ...
- Day Tip:SharePoint 2013 *.ascx.g.cs文件
在开发SharePoint2013的WebPart时,会产生一个*.ascx.g.cs文件.如果用TFS管理源代码经常遇到这个文件丢失.这让人很困扰,如果丢失了请在如下图中添加如下代码: ...
随机推荐
- localforage 对不同浏览器 使用不同的缓存策略 , 大大提高了性能 ,IndexedDB,WebSQL 和 localStorage 三种存储模式
支持回调的异步 API: 支持 IndexedDB,WebSQL 和 localStorage 三种存储模式(自动为你加载最佳的驱动程序): 支持 BLOB 和任意类型的数据,让您可以存储图片,文件等 ...
- jquery offset(),
offset() 一.语法 1. 返回偏移坐标 $(selector).offset(); top: $(selector).offset().top; left: $(selector).offse ...
- runtime error (运行时错误)
比如说: ①除以零 ②数组越界:int a[3]; a[10000000]=10; ③指针越界:int * p; p=(int *)malloc(5 * sizeof(int)); *(p+10000 ...
- Windows 服务器配置、运行、图文流程(新手必备!) - IIS建站配置一条龙
Window 2008 服务器的配置教程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
- 字符串的比较【string和字符数组】
无论是string 还是 字符数组的字符串比较函数,返回的都是字典序的大小.如 1234 和 5 比较时就是1234的字典序小于5,要想比较字符串表示的数字的大小,需要自己写函数比较
- hive 数据导出三种方式
今天我们再谈谈Hive中的三种不同的数据导出方式.根据导出的地方不一样,将这些方式分为三种:(1).导出到本地文件系统:(2).导出到HDFS中:(3).导出到Hive的另一个表中.为了避免单纯的文字 ...
- day43 数据库学习egon的博客 约束
一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN KEY ...
- leetcode:Path Sum【Python版】
1.类中递归调用函数需要加self # Definition for a binary tree node # class TreeNode: # def __init__(self, x): # s ...
- stenciljs 学习八 组件测试
测试对于框架来说比较重要,对于web 组件的测试同样很重要,类似的jest 很方便,stenciljs也是基于jest 开发的 包含两个核心api render(), flush() 测试配置 pac ...
- http-equiv 了解
META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之间,它提供用户不可见的信息.meta标签通常用来为搜索引擎r ...