Mac下手动源码编译安装Swig

使用Homebrew安装

这个方式最简单,但是一般都是安装的最新版:

brew install swig

如果按照特定版本,需要看一个当前支持的列表:

brew search swig
brew install swig@3

源码编译安装

swig依赖pcre库,需要先安装pcre

安装pcre

下载链接:https://github.com/PhilipHazel/pcre2/releases

当前最新版本:Mac下手动源码编译安装Swig_第1张图片
安装步骤:

cd pcre2-10.40

./configure

make && make install 

make -k check 

最终会安装到/usr/local目录。

安装swig

我这里需要的版本是4.0.2。
下载链接:https://www.swig.org/download.html
点击All releases,选择自己所需版本下载。

安装步骤:

./configure

make 

sudo make install

最终会安装到/usr/local目录。

遇到的问题

找不到libpcre.1.dylib

错误表现:

dyld[67898]: Library not loaded: @rpath/libpcre.1.dylib
Referenced from: <DE94F1C3-29F0-37BE-B92A-4C8087B41161> /usr/local/bin/swig
Reason: no LC_RPATH's found

查看swig需要链接的动态库pcre:

otool -l swig | grep pcre
         name @rpath/libpcre.1.dylib (offset 24)

这里pcre使用rpath (用于指定可执行文件或共享库在运行时查找依赖项的路径),我们知道pcre安装在/usr/local/lib目录下,所以解决方案:

sudo install_name_tool -add_rpath /usr/local/lib /usr/local/bin/swig

找不到libc++.1.dylib

错误表现一致:

dyld[71045]: Library not loaded: @rpath/libc++.1.dylib
Referenced from: <DE94F1C3-29F0-37BE-B92A-4C8087B41161> /usr/local/bin/swig
Reason: tried: '/usr/local/lib/libc++.1.dylib' (no such file), 
'/usr/local/lib/libc++.1.dylib' (no such file), 
'/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/libc++.1.dylib' (no such file), 
'/usr/local/lib/libc++.1.dylib' (no such file), 
'/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/libc++.1.dylib' (no such file)

查看swig需要链接的动态库pcre:

name @rpath/libc++.1.dylib (offset 24)

也是使用rpath,但是在/usr/local/lib目录下确实没有libc++。
之后,搜索了一下libc++的库:

find /usr -name "libc++.1.dylib"

发现之前安装anaconda3的时候有:

/usr/local/anaconda3/lib/libc++.1.dylib

所以可以改一下swig这里的链接:

sudo install_name_tool -change "@rpath/libc++.1.dylib" "/usr/local/anaconda3/lib/libc++.1.dylib" /usr/local/bin/swig

这样之后大工搞成。

验证

-> ~ swig -version

SWIG Version 4.0.2

Compiled with g++ [x86_64-apple-darwin23.0.0]

Configured options: +pcre

Please see http://www.swig.org for reporting bugs and further information

你可能感兴趣的:(工具,Android学习笔记,c++,macos,swig,源码编译)