欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

gcc/g++/makefile/easymake/cmake/xmake/nmake ...

发布时间:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 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 ...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。