最简单的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 cmake xmake nmake ...的更多相关文章

  1. windows cmake与nmake

    在Linux下编库经常会使用CMakeLists.txt文件,然后一个cmake 再一个make就可以编译出来. 在Windows下有cmake,但是cmake出来是一个Visual Studio工程 ...

  2. Easymake

    Easymake太好用了,偷懒神器,强力推荐. 一.根目录下的easymake.mk就是makefile模板,我们自定义的makefile只需要包含这个模板即可 include ../../easym ...

  3. cmake用法(转)

    转自:http://blog.csdn.net/dbzhang800/article/details/6314073 新工作中使用到了cmake,所以找点资料学习一下,这篇讲的确实不错,转过来保存一下 ...

  4. Cmake ,Out of Source Build

    Out of Source build呢,就是让Cmake产生的临时垃圾文件,不关乎于项目实际本身的文件放到一个目录里,一般我们把这个目录放在项目根目录(也可以认为是根CmakeLists.txt)下 ...

  5. cmake 学习笔记(一)

    最大的Qt4程序群(KDE4)采用cmake作为构建系统 Qt4的python绑定(pyside)采用了cmake作为构建系统 开源的图像处理库 opencv 采用cmake 作为构建系统 ... 看 ...

  6. cmake编译opencv指南

    目录 cmake编译opencv指南 用包管理器安装 查看opencv相关的包 执行安装 编译安装 为什么编译安装 下载源码 编译脚本 执行编译脚本.解决3rdparty下载 编译后的设定-环境变量 ...

  7. cmake构建时指定编译器架构(x86 or x64)

    vs2015 x64编译器为例,cmake命令如下: cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是 ...

  8. Cmake编译SDL2

    cmake -G"NMake Makefiles" && nmake 中出现了以下这个RC资源编译器报告的错误: invalid language id when ...

  9. 310实验室(六)CMake学习心得

    树形结构方式布局. OTL 中每一个文件中的CMakeLists.txt 有不同的作用:按查看文件的先后顺便进行分层理解, 根文件即第一次 中的.txt是 启用 CMAKE_MODULE_PATH模板 ...

随机推荐

  1. hdu 1018 Big Number 数学结论

    Big Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  2. 利用docker搭建测试环境--安装

    软件测试过程中,总会碰到测试环境不够用的尴尬情况.即时有了机器还要经历装系统,配置环境,调试等一系列繁琐的问题.虽然市面上也有一些批处理话的工具(如salt,fabric等),但是还是需要实体机器作为 ...

  3. linux web.py spawn-fcgi web.py 配置

    本来要用uwsgi,但是...介于以前说过...这台服务器略老...redhat 3的系统...确实很老,没法用yum,没法安装很多东西,打算自己编译uwsgi,但是编译各种错误...花了快一天,最后 ...

  4. bootstrap 模式对话框

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. 请用正则表达式匹配出QQ号(假设QQ号码为5—10位);

    请用正则表达式匹配出QQ号(假设QQ号码为5—10位): 解答: ^ \d{5,10}$

  6. 使用BarcodeLib.Barcode.ASP.NET生成条形码

    生成条形码图片,然后在前台页面展示: <img id="img" src="Mobile/<%=url %>"/> public str ...

  7. 【Google Earth】pro之视频录制

    一.谷歌地球文件简介 谷歌地球能识别的文件分为:gpx.kml.kmz文件.谷歌地球的官方文件为kml和kmz,其中kmz是kml和图片.模型等数据的压缩文件,kml为数据信息文件,也可以分为航迹和字 ...

  8. CSV转PDF(C++)

    CSV : Comma Separate Values 特点: 每条记录占一行 以逗号为分隔符 逗号前后的空格会被忽略 字段中包含有逗号,该字段必须用双引号括起来 字段中包含有换行符,该字段必须用双引 ...

  9. php 使用curl 进行简单模拟提交表单

    //初始化curl $ch = curl_init(); $url = 'xxx'; $option = [ CURLOPT_URL => $url, CURLOPT_HEADER => ...

  10. 在Nginx 配置防止单IP 攻击频次的控制 和 大流量攻击

    nginx可以通过HttpLimitReqModul和HttpLimitZoneModule配置来限制ip在同一时间段的访问次数. HttpLimitReqModul用来限制连单位时间内连接数的模块, ...