博文

Mac OS X安装libevent库报Install libevent bufferevent_openssl.c:60:10: fatal error: 'openssl/bio.h' file

编译   libevent(源文件在/Users/carl/Downloads/libevent-2.1.8-stable),执行make命令是,报 Install libevent bufferevent_openssl.c:60:10: fatal error: 'openssl/bio.h' file 第一反应,感觉是不是 openssl版本太低了。 1. 查看openssl版本,发现版本比较低 $ openssl version OpenSSL 0.9.8zh 14 Jan 2016 2. 升级spenssl,执行 brew install openssl 输出(前面的输出忽略)如下: ==> Downloading https://homebrew.bintray.com/bottles/openssl-1.0.2l.sierra.bottle.tar.gz ######################################################################## 100.0% ==> Pouring openssl-1.0.2l.sierra.bottle.tar.gz ==> Caveats A CA file has been bootstrapped using certificates from the SystemRoots keychain. To add additional certificates (e.g. the certificates added in the System keychain), place .pem files in   /usr/local/etc/openssl/certs and run   /usr/local/opt/openssl/bin/c_rehash This formula is keg-only, which means it was not symlinked into /usr/local, because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto librarie...

在Mac OS下使用libevent库

编译 从官网下载最新的release包  libevent-2.0.22-stable.tar.gz 解压并进入相应目录后进行编译: ./ configure && make sudo make install 编译完成后,可以按Command+Shilt+G进入目录(/usr/local/lib)查看生成的文件夹 libevent-2.0.22 定时器示例 新建一个Command Line Tool 的c++项目,首先在Build Phases->Link Binary With Libraries里添加三个.a库文件 libevent_core.a、libevent_extra.a、libevent_phreads.a(这几个库文件的选择视情况而定)。 检查Building Setting里的Library Search Paths是否已添加了libevent库文件目录,如果没有则添加(以下是我本机路径): /usr/ local / libevent - 2.0 . 22 / lib //库文件目录 在Header Search Paths里将头文件的目录添加进去(以下是我本机路径): /usr/ local / libevent - 2.0 . 22 / include //头文件的目录 在main.cpp添加简单定时器代码: #include <stdio.h> #include <iostream> // libevent头文件 #include <event.h> using namespace std ; struct event evt ; struct timeval tv ; // 定时事件回调函数 void time_cb ( int sock , short event , void * arg ) { printf ( "timer wakeup\n" ); //重新添加定时事件(定时事件触发后默认自动删除) event_add (( struct event *) arg , & tv ); } int ma...

Mac-Operation not permitted问题

最近在mac上操作文件发现提示 chmod: Unable to change file mode on /usr/bin/cc: Operation not permitted 发现是El Capitan(10.11) 加入了Rootless机制,很多系统目录不再能够随心所欲的读写了,即使设置 root 权限也不行。 以下路径无法写和执行 /System /bin /sbin /usr (except /usr/ local ) 加入这个机制主要是为了防止恶意程序的入侵,更多我们可以查看官网 https://developer.apple.com/videos/play/wwdc2015/706/ 如何关闭 重启按住 Command+R,进入恢复模式,打开Terminal csrutil disable 如何开启 重启按住 Command+R,进入恢复模式,打开Terminal。 csrutil enable

Mac OSX 安装新版OpenSSL问题

OpenSSL是什么? OpenSSL 是一个安全 套接字 层密码库,囊括主要的 密码算法 、常用的 密钥 和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 关于OpenSSL“心脏病失血” OpenSSL被曝出现严重安全漏洞后,发现多数通过SSL协议加密的网站使用名为OpenSSL的 开源 软件包。OpenSSL漏洞不仅影响以 https 开头的网站,黑客还可利用此漏洞直接对个人电脑发起“心脏出血”( Heartbleed )攻击。据分析, Windows 上有大量软件使用了存在漏洞的OpenSSL代码库,可能被黑客攻击抓取用户电脑上的内存数据。 Mac OSX 的 OpenSSL Mac OSX一般自带的有OpenSSL。但因为上述OpenSSL“心脏病失血”事件,Mac OSX 自 10.11 El Capitan 起,将原有的 OpenSSL 替换为 LibreSSL 。在以上这些系统中应该除了实测必须要用 OpenSSL 软件外,应该都可以用 LibreSSL 取代 OpenSSL。而对于其他大多数还没有将系统自带的 OpenSSL 替换为 LibreSSL 的会麻烦一些,并且也可能做不到彻底替换。只是对于编译安装的软件,可以尽量用 LibreSSL 取代 OpenSSL。(其他用LibreSSL 取代 OpenSSL的系统还有:OpenBSD 自 5.6 起,Alpine Linux 自 3.5.0 起) 例如:现在使用Mac OSX 10.11 版本,通过openssl version 可以看到本地显示的是LibreSSL的版本: $ openssl version LibreSSL 2.2.7 此外,苹果现在是弃用OpenSSL,使用他自己维护的TLS和加密库(OpenSSL经常爆出漏洞确实让人伤心)。 Mac OSX 安装新版OpenSSL Mac OSX目前可以通过brew 来安装指定版本的OpenSSL。 确认已安装的openssl的版本和位置 $ which openssl 确定版本 $ openssl version brew安装openssl $ brew install openssl brew更新openssl ...

android ndk编译libevent

图片
最近需要编译一下libevent到android设备上跑一下,这里说下基于cmake的编译方式。 一、准备工作。 很多软件越来越多的选择了支持cmake构建,可以比较方便的跨平台。这里编译的2.1.8, 编译到android的armeabi、armeabi-v7a、arm64-v8a、x86、x86_64下面。 从 libevent的github地址,https://github.com/libevent/libevent  检出tag release-2.1.8-stable ① git co -b release-2.1.8-stable release-2.1.8-stable。后续编译在此基础上编译。不要从libevent官网下载,下载的没有cmake相关文件,直接从github libevent仓库,官方检出。 ② android-cmake, 检出 https://github.com/taka-no-me/android-cmake,要用到这个。 ③ ndk用的是android-ndk-r13b 二、编译 2.1 处理下android-ndk-r13b 由于android-ndk-r13b的头文件有问题,libevent编译的时候会报arc4random相关的错误,这里改一下android-ndk-r13b:find . -name “*.h” -o -name “*.c” -o -name “*.cpp”|xargs grep “void arc4random_” 找出arc4random_ 系列函数声明的地方,注释之。由于我编译的是基于android-9 anrdoid-21,因此可以注释这些函数声明 // void arc4random_buf(void*, size_t); // extern void arc4random_addrandom(unsigned char *, int); 注释这些即可。 2.2 修改CMakeLists.txt 如图几步的修改 ① 打开编译动态库。 ② 关闭thread支持 ③ 关闭openssl支持 ④ 关闭checkfuntion arc4random的检查 ⑤ 关闭waitpid的检查,不然编译会检查出...

Android跨平台编译 —— libevent

此文大量引用参考  https://www.dplord.com/2017/10/10/android-ndk-compile-libevent/ 前言     前言都在  Android跨平台编译 —— BOOST     PS:有一些基础知识介绍,还是挺重要的。      准备工作     编译环境 mac os x     ndk版本 ndk 16rb     libevent版本 2.1.8     编译工具 cmake     假设我们已经在android studio上安装了ndk和cmake。     首先需要下载libevent ,这里有个问题,如果直接从官网上下载tar包,解压之后是没有CMakeLists.txt文件的,所以无法使用cmake进行编译。所以我们需要从github上直接下载,地址 https://github.com/libevent/libevent      去clone下来,然后checkout到 release-2.1.8-stable 这个tag上。     环境已经准备就绪。      编译 步骤1    首先打开根目录下的CMakeLists.txt文件,有几处改动 diff --git a/CMakeLists.txt b/CMakeLists.txt index b4a34f3d..c32721d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,7 +105,7 @@ option(EVENT__BUILD_SHARED_LIBRARIES      "Define if libevent should be built with shared libraries instead of...