zoukankan      html  css  js  c++  java
  • gcc/g++/makefile/easymake/cmake/xmake/nmake ...

    最简单的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 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(5,6) returns 11
    
    
    
    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: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.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(8,8)=16

    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

    
    
  • 相关阅读:
    HTML-图片和多媒体
    HTML弹性布局
    HTML定位——绝对定位和相对定位、固定定位
    HTML定位和布局----float浮动
    CSS层叠
    HTML-css样式引用方式
    认识HTML和CSS
    原生js 进度条
    原生js文字滚动 滚动条
    时间轴
  • 原文地址:https://www.cnblogs.com/dong1/p/5908476.html
Copyright © 2011-2022 走看看