下载源码
curl http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz -o pkg-config-0.29.2.tar.gz
编译
tar -xf pkg-config-0.29.2.tar.gz cd pkg-config-0.29.2 ./configure --with-internal-glib make
执行make 时报错
gatomic.c:392:10: error: incompatible integer to pointer conversion passing 'gssize' (aka 'long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion] 392 | return g_atomic_pointer_add ((volatile gpointer *) atomic, val); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./gatomic.h:170:46: note: expanded from macro 'g_atomic_pointer_add' 170 | (gssize) __sync_fetch_and_add ((atomic), (val)); \ | ^~~~~ gatomic.c:416:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion] 416 | return g_atomic_pointer_and ((volatile gpointer *) atomic, val); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./gatomic.h:177:45: note: expanded from macro 'g_atomic_pointer_and' 177 | (gsize) __sync_fetch_and_and ((atomic), (val)); \ | ^~~~~ gatomic.c:440:10: error: incompatible integer to pointer conversion passing 'gsize' (aka 'unsigned long') to parameter of type 'gpointer' (aka 'void *') [-Wint-conversion] 440 | return g_atomic_pointer_or ((volatile gpointer *) atomic, val); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ./gatomic.h:184:44: note: expanded from macro 'g_atomic_pointer_or' 184 | (gsize) __sync_fetch_and_or ((atomic), (val)); \ | ^~~~~ 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.
代码修改
diff --git a/glib/glib/gatomic.c b/glib/glib/gatomic.c index eb2fe46..33fbddc 100644 --- a/glib/glib/gatomic.c +++ b/glib/glib/gatomic.c @@ -386,10 +386,10 @@ gboolean * Since: 2.30 **/ gssize -(g_atomic_pointer_add) (volatile void *atomic, +(g_atomic_pointer_add) (volatile gssize *atomic, gssize val) { - return g_atomic_pointer_add ((volatile gpointer *) atomic, val); + return g_atomic_pointer_add ((volatile gssize *) atomic, val); } /** @@ -410,10 +410,10 @@ gssize * Since: 2.30 **/ gsize -(g_atomic_pointer_and) (volatile void *atomic, +(g_atomic_pointer_and) (volatile gsize *atomic, gsize val) { - return g_atomic_pointer_and ((volatile gpointer *) atomic, val); + return g_atomic_pointer_and ((volatile gsize *) atomic, val); } /** @@ -434,10 +434,10 @@ gsize * Since: 2.30 **/ gsize -(g_atomic_pointer_or) (volatile void *atomic, +(g_atomic_pointer_or) (volatile gsize *atomic, gsize val) { - return g_atomic_pointer_or ((volatile gpointer *) atomic, val); + return g_atomic_pointer_or ((volatile gsize *) atomic, val); } /** @@ -458,10 +458,10 @@ gsize * Since: 2.30 **/ gsize -(g_atomic_pointer_xor) (volatile void *atomic, +(g_atomic_pointer_xor) (volatile gsize *atomic, gsize val) { - return g_atomic_pointer_xor ((volatile gpointer *) atomic, val); + return g_atomic_pointer_xor ((volatile gsize *) atomic, val); } #elif defined (G_PLATFORM_WIN32) diff --git a/glib/glib/gatomic.h b/glib/glib/gatomic.h index e7fd1f2..21746da 100644 --- a/glib/glib/gatomic.h +++ b/glib/glib/gatomic.h @@ -66,16 +66,16 @@ gboolean g_atomic_pointer_compare_and_exchange (volatile void *a gpointer oldval, gpointer newval); GLIB_AVAILABLE_IN_ALL -gssize g_atomic_pointer_add (volatile void *atomic, +gssize g_atomic_pointer_add (volatile gssize *atomic, gssize val); GLIB_AVAILABLE_IN_2_30 -gsize g_atomic_pointer_and (volatile void *atomic, +gsize g_atomic_pointer_and (volatile gsize *atomic, gsize val); GLIB_AVAILABLE_IN_2_30 -gsize g_atomic_pointer_or (volatile void *atomic, +gsize g_atomic_pointer_or (volatile gsize *atomic, gsize val); GLIB_AVAILABLE_IN_ALL -gsize g_atomic_pointer_xor (volatile void *atomic, +gsize g_atomic_pointer_xor (volatile gsize *atomic, gsize val); GLIB_DEPRECATED_IN_2_30_FOR(g_atomic_add) diff --git a/glib/glib/gdataset.c b/glib/glib/gdataset.c index 006bdc1..1793716 100644 --- a/glib/glib/gdataset.c +++ b/glib/glib/gdataset.c @@ -1188,7 +1188,7 @@ g_datalist_set_flags (GData **datalist, g_return_if_fail (datalist != NULL); g_return_if_fail ((flags & ~G_DATALIST_FLAGS_MASK) == 0); - g_atomic_pointer_or (datalist, (gsize)flags); + g_atomic_pointer_or ((gsize *)datalist, (gsize)flags); } /** @@ -1211,7 +1211,7 @@ g_datalist_unset_flags (GData **datalist, g_return_if_fail (datalist != NULL); g_return_if_fail ((flags & ~G_DATALIST_FLAGS_MASK) == 0); - g_atomic_pointer_and (datalist, ~(gsize)flags); + g_atomic_pointer_and ((gssize *)datalist, ~(gsize)flags); } /**
再次编译成功