最简单的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------     9月  : basics
drwx------ 9月 : so
drwx------ 9月 : staticLib
drwx------ 9月 : vpath

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

cp ../../easymake.mk Makefile

运行实例

dong@ubuntu:~/cb/easymake-master/samples/basics$ ./test.sh
cp ../../easymake.mk Makefile make
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(,) returns create add_test.cpp make 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:: int main(): Assertion `add(,)==' failed.
Makefile:: recipe for target 'test' failed
make: *** [test] Error

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

make bin/libmylib.so

g++ add_test.cpp -I. -L./bin/ -lmylib -o bin/target

LD_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 detected g++ -shared -o bin/libmylib.so bin/math/add.o
add(,)=

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

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

VPATH = ../src2

include ../../../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源码在这里下载

二、还有一堆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

cmake交叉编译

https://blog.csdn.net/qq_24011271/article/details/82498500

												

Easymake的更多相关文章

  1. 通用的 makefile 小工具分享 - Easymake 使用说明

    Easymake 使用说明 介绍 Easymake 是一个在linux系统中 C/C++ 开发的通用 makefile.在一个简单的 C/C++ 程序中使用 easymake,你甚至可以不写一行 ma ...

  2. easymake cmake xmake nmake ...

    最简单的Makefile,但是还是大程序少不了makefile工具 #CC=arm-linux-gnueabihf-CC=target:    $(CC)gcc -o algo_main algo_m ...

  3. 工程管理之makefile与自动创建makefile文件过程

    (风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...

  4. project管理之makefile与自己主动创建makefile文件过程

    (风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自己主动编译和链接使用的环境 想知道到Linux Makefile系 ...

随机推荐

  1. ERROR! MySQL is running but PID file could not be found

    /etc/init.d/mysql status提示ERROR! MySQL is running but PID file could not be found先打印MYSQL进程ps aux | ...

  2. 2016 最佳 Linux 发行版排行榜

    2015年,不管在企业市场还是个人消费市场都是 Linux非常重要的一年.作为一个自2005年起就开始使用 Linux的 Linuxer ,我门见证了 Linux在过去十年的成长.2016 Linux ...

  3. 一致性哈希算法与Java实现

    原文:http://blog.csdn.net/wuhuan_wp/article/details/7010071 一致性哈希算法是分布式系统中常用的算法.比如,一个分布式的存储系统,要将数据存储到具 ...

  4. 测试环境搭建心得 vs2008+SQL2008 PHP+APACHE+mysql Team Foundation Server2013

    大四即将结束,大学的最后一个假期,找到一份实习工作,担任测试工程师.在过年前的最后一周入职,干了一周的活儿.主要工作就是搭建测试环境. VMware 主要熟悉VMware软件,装系统基本都没什么问题. ...

  5. NOIP2015斗地主[DFS 贪心]

    题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4< ...

  6. CODEVS1643 线段覆盖3[贪心]

    1643 线段覆盖 3   时间限制: 2 s   空间限制: 256000 KB   题目等级 : 黄金 Gold 题解       题目描述 Description 在一个数轴上有n条线段,现要选 ...

  7. jquery的add()用法总结

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...

  8. JSP中ResultSet的方法

    1,如何获得ResultSet的结构 ResultSetMetaData rsmd=rs.getMetaData();cn=rsmd.getColumnCount();for(int ik=1;ik& ...

  9. 微信小程序之数据绑定(五)

    [未经作者本人允许,请勿以任何形式转载] 前几篇讲述微信小程序开发工具使用.生命周期和事件. 本次讲述微信小程序数据和视图绑定 >>>数据视图绑定 做前端开发的同学,尤其是WEB前端 ...

  10. JS组件系列——封装自己的JS组件,你也可以

    前言:之前分享了那么多bootstrap组件的使用经验,这篇博主打算研究下JS组件的扩展和封装,我们来感受下JQuery为我们提供$.Extend的神奇,看看我们怎么自定义自己的组件,比如我们想扩展一 ...