最简单的Makefile,但是还是大程序少不了makefile工具

#CC=arm-linux-gnueabihf-
CC=
target:
    $(CC)gcc -o algo_main algo_main.c cJSON.c -lm
clean:
    @rm -rf algo_main

一、Easymake太好用了,偷懒神器,强力推荐.

1、根目录下的easymake.mk就是makefile模板,我们自定义的makefile只需要包含这个模板即可

include ../../easymake.mk

2、源码包自带的sample够我们参考应用了。

drwx------ 4  4096  9月 26 10:56 basics
drwx------ 4  4096  9月 26 09:50 so
drwx------ 3  4096  9月 26 09:49 staticLib
drwx------ 4  4096  9月 26 09:49 vpath

1) basics常规应用,包含一个shell脚本,也就是copy一份makefile文件

cp ../../easymake.mk Makefile

运行实例

dong@ubuntu:~/cb/easymake-master/samples/basics$ ./test.sh
cp ../../easymake.mk Makefilemake
g++   -MP -MMD -c -o bin/math/add.o  math/add.cpp
g++   -MP -MMD -c -o bin/add.o  add.cpp
# main detected
g++ -o bin/add bin/math/add.o bin/add.o./bin/add
add(5,6) returns 11create add_test.cppmake test
g++   -MP -MMD -c -o bin/add_test.o  add_test.cpp
# main detected
g++ -o bin/add_test bin/math/add.o bin/add_test.o# run [bin/add_test]# add_test: add_test.cpp:7: int main(): Assertion `add(1,1)==3' failed.
Makefile:216: recipe for target 'test' failed
make: *** [test] Error 2

2)so生成库文件并且运行,用shell脚本来编译

make bin/libmylib.sog++ add_test.cpp -I. -L./bin/ -lmylib -o bin/targetLD_LIBRARY_PATH=./bin/ ./bin/target

运行实例

dong@ubuntu:~/cb/easymake-master/samples/so$ ./so_test.sh
g++  -I. -fPIC -MP -MMD -c -o bin/math/add.o  math/add.cpp
g++  -I. -fPIC -MP -MMD -c -o bin/add_test.o  add_test.cpp
# main detectedg++ -shared -o bin/libmylib.so bin/math/add.o
add(8,8)=16

3)staticLib生成静态库,就不一一编译运行了,同上

4)vpath这个实例可以同时编译多个可运行项目,makefile只需要添加自定义的项目源码路径就行了

VPATH = ../src2include ../../../easymake.mk

运行实例

dong@ubuntu:~/cb/easymake-master/samples/vpath/proj$ make
g++   -MP -MMD -c -o bin/math/add.o  math/add.cpp
g++   -MP -MMD -c -o bin/main.o  main.cpp
# main detected
g++   -MP -MMD -c -o bin/hello_world.o  ../src2/hello_world.cpp
g++   -MP -MMD -c -o bin/test.o  ../src2/test.cpp
# main detected
g++ -o bin/main bin/math/add.o bin/main.o bin/hello_world.o
g++ -o bin/test bin/math/add.o bin/hello_world.o bin/test.o

3、Easymake源码在这里下载

https://github.com/roxma/easymake

二、还有一堆cmake xmake nmake ...

CMake 入门实战

http://www.hahack.com/codes/cmake/

cmake_demo.zip

cmake升级

https://blog.csdn.net/learning_tortosie/article/details/80593956

wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
tar -xvf cmake-3.9.2.tar.gz
cd cmake-3.9.2
./configure
make

sudo make install

三、指定安装目录

一种是在./configure的时候指定路径

./configure --prefix=$(pwd)/_install

一种是make install的时候指定路径

make DESTDIR=$(pwd)/_install install

sudo pip2 install numpy --target=/usr/local/lib/python2.7/site-packages

四、gcc/g++升级和降级

由于在matlab中要使用mex,需要将原本的gcc '5.4.0' 版本降级(替换)为MEX支持的版本: '4.9.x'。

1.加入源,方便更新。

sudo add-apt-repository ppa:ubuntu-toolchain-r/test

2.更新

sudo apt-get update

3.安装

sudo apt-get install gcc-4.9
    sudo apt-get install g++-4.9

4.更新

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20

5.成功验证:

gcc --version

成功标志:

g++ (Ubuntu 4.9.4-2ubuntu1~16.04) 4.9.4

gcc --version

成功标志:

gcc (Ubuntu 4.9.4-2ubuntu1~16.04) 4.9.4

原文链接:https://blog.csdn.net/Pancheng1/article/details/83058833

转载于:https://www.cnblogs.com/dong1/p/5908476.html

gcc/g++/makefile/easymake/cmake/xmake/nmake ...相关推荐

  1. c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用)

    搞不太懂gcc和cmake(qmake)等的区别 1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器, 它可以编译很多种编程语言(括C.C++. ...

  2. Linux下gcc/g++、make和cmake的区别

    文本程序到可执行文件生成无论在什么平台大致分为以下几个部分:  1.用编辑器编写源代码,如.c文件.  2.用编译器编译代码生成目标文件,如.o.  3.用链接器连接目标代码生成可执行文件,如.exe ...

  3. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile

    目录 一.开发工具 二.Linux编辑器 - vim使用 2.1 vim 的基本概念 2.2 vim的基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2. ...

  4. 【Linux修炼】6.gcc/g++及Makefile【工具篇】

    每一个不曾起舞的日子,都是对生命的辜负. Linux-gcc/g++及Makefile 本节目标 程序的翻译过程 1.程序的翻译过程 2. 理解选项的含义 3. 动态链接和静态链接 Linux项目自动 ...

  5. <Linux常用开发工具使用(yum、vim、gcc/g++、gdb、make/Makefile等)>——《Linux》

    目录 1.Linux 软件包管理器 yum 1.1什么是软件包: 1.2 关于 rzsz: 1.3 如何安装软件: 1.4 如何卸载软件: 2.Linux开发工具 3. Linux编辑器-vim使用 ...

  6. Linux下gcc/g++编译器gdb调试器和makefile的使用

    文章目录 一.gcc的使用 gcc选项 二.gdb的使用 三.Linux项目自动化构建工具-make/Makefile 3.1 概念 3.2 使用 3.3 原理 一.gcc的使用 首先我们知道一个C/ ...

  7. Linux【vim】【gcc/g++】【make/Makefile】

    目录 一.vim操作 零.首先上按键图 一.Linux编辑器-vim使用 vim的三种模式 二.命令模式 : 赋值粘贴操作 光标的操作 删除操作: 大小写切换: 替换操作: 删除 三.底行模式 分屏操 ...

  8. 【Linux】Linux环境基础开发工具使用 —— yum | vim | gcc g++ | gdb | make makefile | 进度条 | git

    Linux环境基础开发工具使用 1. Linux软件包管理器yum 1.1 什么是软件包 1.2 软件安装三板斧 1.2.1 查看软件包 1.2.2 安装软件 1.2.3 卸载软件 2. vim 2. ...

  9. 【LINUX修行之路】——工具篇gcc/g++的使用和自动化构建工具make/makefile

    学习范围:✔️LINUX ✔️ gcc/g++✔️make/makefile 本文作者:蓝色学者 文章目录 一.前言 二.概念 什么是gcc/g++? 什么是make/makefile? 三.教程 3 ...

最新文章

  1. 数据防泄漏(中文版)
  2. 重构-改善既有代码的设计:简化函数调用 (八)
  3. accelerated C++ 第0章
  4. 利用事件冒泡和阻止事件冒泡的例子
  5. 安川g7变频器说明书_安川机器人故障维修合集
  6. atomic java_在Java中添加@atomic操作
  7. 网站大流量高并发访问的处理解决办法
  8. MediaCodec进行编解码AAC(文件格式转换)
  9. 数值优化——牛顿迭代法求解函数零点
  10. 学3dmax赚钱吗?学3dmax工资怎么样?
  11. amd服务器虚拟化,着眼未来 AMD皓龙产品从“芯”实现虚拟化
  12. 有哪些简洁的人生建议?
  13. 蓝桥杯:解救小哈最短路径
  14. 私域运营中小程序的作用
  15. php tp6 错误接管分析,终于成功使用whoops接管tp6的异常处理!
  16. 基于OpenStack Ironic与DPU的网易数帆裸金属方案实践
  17. wps 选择 高亮_WPS轻松办公—如何批量选中不同颜色的文字
  18. 眼球追踪如何预测头部追踪
  19. SLAM学习笔记(二十)LIO-SAM流程及代码详解(最全)
  20. android pak文件_游戏中的Pak文件解析

热门文章

  1. iPhone OS框架 介绍
  2. Michael A. Cusumano
  3. Electric shaver and clean: workable when power is low
  4. 好物推荐:notion想同步什么东西,直接在这里写就可以,不用再发消息,真棒
  5. bnpparibas
  6. 纪念一下我画的第一个印刷电路板!
  7. 龟兔赛跑的升级版本和在课业学习上的应用
  8. 关于shader.createGPUProgram耗时较高的问题
  9. 安装安卓SDK和JDK的简便方法
  10. U3D 场景切换时 脚本对象,GO对象,资源对象的问题