我的Mac编译环境

1.操作系统

img

2.编译环境

1)make

GNU Make 3.81 (输入make --version)

2)gcc/g++

Apple clang version 11.0.3 (clang-1103.0.32.59)

img

原始项目概况

在Linux上使用NetBeans编辑器创建的项目,有N个并列的工程,每个工程的主makefile文件都包涵了很多的自动生成的.mk文件。

Mac上编译出现的问题

问题1:找不到openssl/ssl.h文件

http/mongoose.c:4473:10: fatal error: 'openssl/ssl.h' file not found #include <openssl/ssl.h>

解决办法

https://blog.csdn.net/qq_31433709/article/details/105256213

brew reinstall openssl会提示去修改配置~/.bash_profile
文件,将下载好的openssl复制到/Users/yy/Desktop/CZWork/XCodeDevTool/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include下。

原因反思

编译器会默认去/MacOSX.sdk/usr/include下找openssl标准库,虽然Mac上安装了,但是安装的位置不是要求的这个位置。

问题2:error: expected expression[]()

问了专业人士才知道这个工程用了c++11的语法,编译的时候要在编译参数CFLAGS加上-std=c++11

工程有太多地方有mk文件,有很多编译语句,难道每个地方都要加?

解决办法

研究发现NetBeans在主工程里自动生成的mk文件里,自动生成了CXXFLAGS,改为CXXFLAGS=-std=c++11即可,注意不是CFLAGS。

问题3:gcc 6新增编译警告

../p2p_lib_core/core/core_def.h:98:93: error: invalid suffix on literal; C++11 requires a
space between literal and identifier [-Wreserved-user-defined-literal]
…if(D&(P2P_USE_LOG_STATUS)){printf("JR LOG ("#D"):"x);…

解决办法

参照:https://blog.csdn.net/xiaoyur347/article/details/51628408

给core_def.h文件中的所有"JR LOG ("#D"):"后面增加空格

问题4:语法规范的问题

很多地方语法报错,要强转成void *类型。

问题5:自定义的数据类型找不到key_t

分析这种数据类型,自己定义 typedef int key_t;

分类: cplus

0 条评论

发表回复

您的电子邮箱地址不会被公开。