下载源码
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);
}
/**
再次编译成功