举例,如在macos 15.7下安装pkg-config会遇到以下错误:
brew install pkg-config
Last 15 lines from /Users/dany/Library/Logs/Homebrew/pkg-config/02.make:
gatomic.c:464:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion]
464 | return g_atomic_pointer_xor ((volatile gpointer *) atomic, val);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./gatomic.h:191:45: note: expanded from macro 'g_atomic_pointer_xor'
191 | (gsize) __sync_fetch_and_xor ((atomic), (val)); \
| ^~~~~
4 errors generated.
解决办法, 是加上--debug,如下:
brew install --debug pkg-config
然后出错的时候,brew会提示你如下:
make: *** [all] Error 2
/usr/local/Homebrew/Library/Homebrew/shims/shared/git --version
/usr/local/Homebrew/Library/Homebrew/shims/shared/curl --version
/usr/local/Homebrew/Library/Homebrew/ignorable.rb:29:in `block in raise'
BuildError: Failed executing: make
1. raise
2. ignore
3. backtrace
4. irb
5. shell
这个时候选择,shell.
然后 pwd
bash-3.2$ pwd
/private/tmp/pkg-config-20260614-1862-jv8adw/pkg-config-0.29.2
然后使用如sublime之类的工具进行代码或者makefile的修改,如上面的例子,只需要加入-Wno-error=int-conversion
我们先export一个全局的变量
bash-3.2$ export CFLAGS = "-Wno-error=int-conversion"
然后修改glib目录下的两个makefile也加入这个cflags,
AUTOHEADER = ${SHELL} /private/tmp/pkg-config-20260614-1862-jv8adw/pkg-config-0.29.2/glib/missing autoheader
AUTOMAKE = ${SHELL} /private/tmp/pkg-config-20260614-1862-jv8adw/pkg-config-0.29.2/glib/missing automake-1.15
AWK = awk
CC = clang
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2 -Wno-error=int-conversion
CPP = clang -E
然后make && make install .
没有错之类,输入exit
exit
然后,选择2 ignore
bash-3.2$ exit
exit
1. raise
2. ignore
3. backtrace
4. irb
5. shell
Choose an action: 2
==> make install
然后继续,问题解决!