如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)


最近在Github上找到了一个很不错的C++服务器框架库,所以Clone了一份想试试,下图是该项目首页:

如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)_第1张图片

项目主持人也给出了相应平台的库编译方式(此处只涉及其常用的三个库):

如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)_第2张图片

以上是三库合一的编译方式,当然也可独自编译。如果这样,需要注意一点:

因为 lib_acl 是最基础的库,而 lib_protocol 依赖于 lib_acl,lib_acl_cpp 依赖于 lib_protocol 和 lib_acl,所在生成动态库时,需要注意生成顺序,编译顺序为:lib_acl,lib_protocol,lib_acl_cpp。 


此处采用最简单三库和一的编译方式:即简单的使用命令 make build_one (其Makefile文件就在项目根目录下)

编译时出现致命错误,无法编译:

如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)_第3张图片

究其原因,最后发现有可能是gcc版本过高!!(上图编译用的是gcc-9.1)

如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)_第4张图片

最后不得不去下载一个较低版本的gcc,选了gcc-4.9

如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)_第5张图片

有了低版本的GCC之后,就可以重新开始编译了,使用如下命令指定低版本GCC:

make build_one CC=gcc-4.9 CPP=g++-4.9 CXX=g++-4.9 LD=g++-4.9

结果发现又编译不过,报错如下(无共享库libmpfr.so.4):

/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.3/cc1: error while loading shared libraries: libmpfr.so.4: cannot open shared object file: No such file or directory

此时只需使用如下命令创建libmpfr.so.4(简单的建立一个软链接就行):

 ln -s /usr/lib/libmpfr.so.6 /usr/lib/libmpfr.so.4 

最后,成功编译:

如何给Makefile指定自己想用的gcc/g++版本(编译开源项目acl-dev/acl库时的经历)_第6张图片

 

你可能感兴趣的:(acl开源项目学习)