今天解决了以下几个问题:
- macos下编译动态链接库的问题
- macos下代码architecture导致NIF库不能载入的问题
- 重新将macos下的erlang编译为64位版本
之前一直没有搞定在macos上编译nif的问题,弄得每次测试程序都很不方便。今天终于明白原因是将linux下编译动态库的参数和macos下还是不一样的。
在linux下编译的命令是:
gcc *.c -fPIC -shared -o hxnif.so
在macos下,-shared是没有用的,经过man ld命令察看参数后,得到下面的命令:
gcc *.c -fPIC -bundle -undefined dynamic_lookup -o hxnif.so
提示:可以用otool命令替代liunx下的ldd命令,可以用file指令察看编译后的文件是32位的还是64位的,另外ld命令的manpages里很多内容的,可以手动制定是32位还是64位编译。
编译得到nif库文件后,迫不及待得开启erl进行测试,结果报错,说是architecture不匹配。原来我源码编译的时候默认安装成来32位的系统(用file命令验证的确如此),而我gcc编译库的时候默认是64位的(我的snow leopard 10.6.5是64位地)。因为nif用到的多个第三方库都已经是64位安装,我决定把erlang安装为64位的。
先./configure --help看到了64位选项参数是:--enable-darwin-64bit
于是运行下面几个命令:
./opt_build configure --enable-darwin-64bit
./opt_build boot -a
./opt_build release -a
最后,大功告成,从此我再也不用远程到linux里调试erlang nif库了。。。
分享到:
相关推荐
本文将详细介绍如何在Erlang环境中编译并使用MySQL接口,以便在Erlang程序中访问MySQL数据库。 首先,我们需要一个Erlang MySQL客户端库。这里提到的“erlang_mysql编译好了”可能是指已经成功编译了这样的库,它...
本工具链的制作运行环境是macOS Monterey 12.5.1 适用目标机Asus AX86U路由器 本工具链中各软件版本: binutils 2.28.1 glibc 2.26 Linux 4.1.52 gcc 12.2.0 gdb 12.1.0 gmp 6.2.1 mpfr 4.1.0 mpc 1.2.1 isl 0.24...
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的zlib跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...
在MacOS上编译OpenVINO C++项目测试代码是一个涉及多步骤的过程,涉及到的知识点主要包括C++编程、MacOS操作系统环境以及Intel的OpenVINO(Open Visual Inference and Neural Network Optimization)工具套件的使用...
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的libXML2跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...
总之,64位 macOS High Sierra 10.13.2编译的Hadoop 2.8.3 native库是专为苹果电脑用户量身定制的数据处理解决方案,它优化了Hadoop在macOS上的运行效率,确保了大数据处理任务的顺利进行。对于开发者和数据分析师来...
Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...
在MacOS上源码编译OpenCV是一项技术性较强的任务,涉及到C++编程、软件构建以及计算机视觉库的使用。OpenCV(开源计算机视觉库)是一个功能强大的库,广泛应用于图像处理、机器学习和计算机视觉等领域。在MacOS环境...
搭建Linux内核0.11版本的教程涵盖了在Windows、MacOS和Ubuntu这些主流操作系统上的实践过程。Linux内核0.11是Linux历史上的一个早期版本,它为我们提供了了解操作系统核心工作原理的机会。这个教程可能对软件开发...
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的libzip跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...
在编译之前,确保你的系统满足Hadoop构建的所有依赖。这通常包括Git、Maven、CMake等工具。如果尚未安装,可以使用Homebrew(一个macOS的包管理器)来安装它们: ```bash brew install git maven cmake ``` 现在,...
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的OpenJpeg跨平台编译成果(MacOS版本)。 二、使用人群 ...
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的libjpeg跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...
在opencv 3+的版本中,由于将SIFT,SURF这些有专利的算法单独提取到了opencv_contrib模块,因为官方给出的android sdk release版本中没有预先编译 opencv_contrib 至opencv库,要想在Android 中使用SURF, SIFT这些...
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的gdal跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...
本文将详细介绍如何在macOS环境下使用apktool、dex2jar和jd-gui这三款工具来完成APK的反编译过程。 首先,让我们了解这三个工具的作用: 1. **apktool**:这是一个强大的Android APK反编译工具,可以将APK文件中的...
总的来说,离线安装Erlang需要对编译和系统管理有一定的理解,但通过以上步骤和提供的资源,你应该能够成功地在没有网络连接的情况下完成安装。记得在安装过程中仔细阅读文档,处理可能出现的任何错误或警告。
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的geos跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...
Python2.7_MACOS_64位&32位MacOS系统安装包Python2.7_MACOS_64位&32位MacOS系统安装包Python2.7_MacOS(Python2.7_MacOS系统32位+64位)
QGIS可以在Windows、Mac OS和Linux等操作系统上运行。 QGIS的跨平台编译需要一系列开源库的支持,本系列提供QGIS相关的编译成果。 本资源的内容为:基于Qt的MiniZip跨平台编译成果(MacOS版本)。 二、使用人群 QGIS...