win端的直接编译就能使用,但是到mac下直接使用相同的配置进行编译就出现了问题,编译出来的库使用libass调用之后没有任何数据出来,这就很奇怪了。我刚开始以为自己编译的时候缺少什么参数,找了好久,终于找到了问题。
以下是解决步骤,依赖的工具自己搜索下载,不做过多的解释。
1. 下载源码
git clone Index of /git/libiconv.git/
2. 切换到tag v1.18(最新版本为准)
git checkout v1.18
3. 下载补丁
curl -o patch-utf8mac.diff https://raw.githubusercontent.com/Homebrew/patches/9be2793af/libiconv/patch-utf8mac.diff
4. 应用补丁
patch -p1 < patch-utf8mac.diff
5. 生成配置
./autogen.sh
6. 执行配置
./configure --enable-static --prefix=/Users/mac/Downloads/install-iconv --enable-extra-encodings --disable-debug --disable-dependency-tracking
8. 生成
make -f Makefile.devel CFLAGS="-Wno-incompatible-function-pointer-types" CC=clang
7. 执行上面的配置之后才会生成./lib/flags.h文件,检查文件中宏(看下+号那一行宏有没有)是否存在,如果不存在手动添加。

        #define ei_ascii_oflags (0)
        #define ei_utf8_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
+         #define ei_utf8mac_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
        #define ei_ucs2_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
        #define ei_ucs2be_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAMO)
        #define ei_ucs2le_oflags (HAVE_ACCENTS | HAVE_QUOTATION_MARKS | HAVE_HANGUL_JAM

9. 安装
make install CFLAGS="-Wno-incompatible-function-pointer-types"

遇到的问题
1. aclocal-1.16不存在,并且没有办法安装
解决:打开项目,搜aclocal-1.16 ,替换为aclocal即可。
2. gunlib 环境
解决:可以根据提示执行.gitsub.sh pull。或者可以自己clone gunlib项目,并添加到环境变量
git clone Index of /git/gnulib.git/
export GNULIB_SRCDIR=$PWD/gnulib

刚开始做的时候我也不知道有这个问题。直到我使用homebrew安装了之后能使用,我就预感到不妙。于是找到了homebrew安装这个库的步骤,于是就看到了这些问题。

更多推荐