目录
我的Mac编译环境
1.操作系统
2.编译环境
1)make
GNU Make 3.81 (输入make --version)
2)gcc/g++
Apple clang version 11.0.3 (clang-1103.0.32.59)
原始项目概况
在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;
0 条评论