MacOS Big Sur 11.5.2下编译giflib时make命令执行失败问题求助
解决MacOS Big Sur编译giflib 5.2.1时的链接错误
我之前在MacOS Big Sur上编译giflib的时候也碰到过一模一样的问题!这个错误的根源很明确:编译libutil.so时,链接器找不到_GifErrorString符号——这个符号是定义在giflib核心库模块里的,但当前的make命令只打包了qprintf.o、quantize.o、getarg.o这几个目标文件,完全没关联核心库,自然会报错。
下面是具体的修复步骤:
修改Makefile的编译规则
打开当前giflib-5.2.1目录下的Makefile,找到生成libutil.so的那一段规则:libutil.so: qprintf.o quantize.o getarg.o cc -std=gnu99 -fPIC -Wall -Wno-format-truncation -O2 -shared -Wl,-install_name -Wl,libutil.so.7 -o libutil.so qprintf.o quantize.o getarg.o我们需要给这个命令加上核心库的链接参数,同时确保核心库先被编译。修改后的规则应该是:
libutil.so: qprintf.o quantize.o getarg.o libgif.so cc -std=gnu99 -fPIC -Wall -Wno-format-truncation -O2 -shared -Wl,-install_name -Wl,libutil.so.7 -o libutil.so qprintf.o quantize.o getarg.o -lgif -L.-lgif:告诉链接器要链接giflib的核心库-L.:指定链接器在当前目录查找库文件- 把
libgif.so加到依赖里,确保编译libutil.so前先完成核心库的编译
分步执行编译
先单独编译核心库libgif.so:make libgif.so等这一步完成后,再执行完整的make命令:
make这样就能顺利完成整个giflib的编译了。
额外省心方案
如果你不是必须手动编译源码,完全可以用MacOS的Homebrew直接安装预编译好的giflib,一步到位:
brew install giflib
内容的提问来源于stack exchange,提问作者sia
相关产品推荐
相关产品推荐

