
Glib2框架研究
Glib2框架研究
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Glib2之无法添加符号: DSO missing from command line(十九)
1.报错:# gcc extended-test.c -lpulse -lpulse-simple/usr/bin/ld: /tmp/ccepJsJD.o: undefined reference to symbol 'sin@@GLIBC_2.2.5'//lib/x86_64-linux-gnu/libm.so.6: 无法添加符号: DSO missing from command linecollect2: error: ld returned 1 exit status2.解决:&l.原创 2021-07-07 19:34:02 · 1610 阅读 · 0 评论 -
Glib2之定义手册(十八)
Basic Types Basic Types — standard GLib types, defined for ease-of-use and portability Functions#define G_GINT64_CONSTANT() #define G_GUINT64_CONSTANT() #define G_GOFFSET_CONSTANT() Types and Valuestypedef gbool...原创 2021-03-26 16:09:08 · 544 阅读 · 0 评论 -
glibc之pthread_mutex_t/pthread_cond_t实现原理(十七)
1.pthread_mutex_t实现glibc/sysdeps/nptl/bits/pthreadtypes.htypedef union{ struct __pthread_mutex_s __data; char __size[__SIZEOF_PTHREAD_MUTEX_T]; long int __align;} pthread_mutex_t;<2>.glibc/sysdeps/nptl/bits/thread-shared-types.hstruct _.原创 2021-03-08 16:19:55 · 759 阅读 · 0 评论 -
glib2之g_cond_broadcast/g_cond_signal/g_cond_wait等底层实现(十六)
1.void g_cond_wait (GCond *cond, GMutex *mutex){ gint status; if G_UNLIKELY ((status = pthread_cond_wait (g_cond_get_impl (cond),g_mutex_get_impl (mutex))) != 0) g_thread_abort (status, "pthread_cond_wait");}2.void g_cond_signal (GCond *cond){.原创 2021-03-08 15:30:38 · 1003 阅读 · 0 评论 -
Glib2基本api调用流程(十五)
******************************************************************************一、Glib2基本apig_object_new();g_object_set();g_object_get();g_object_connect();******************************************************************************1.g_object_new().原创 2020-11-14 19:47:43 · 695 阅读 · 0 评论 -
GTK测试程序(十四)
0.安装gtk安装包# sudo apt-get install libgtk2.0-dev libgtk-3-dev1.gtk_demo.c#include <string.h>#include <gtk/gtk.h>#include <gst/gst.h>#include <gst/video/videooverlay.h>#include <gdk/gdk.h>#include<gtk/gtk.h>gint .原创 2020-11-14 18:48:37 · 511 阅读 · 0 评论 -
Glib2之GType和gpointer类型(十三)
1.GType到底是什么类型?#if GLIB_SIZEOF_SIZE_T != GLIB_SIZEOF_LONG || !defined __cplusplus typedef gsize GType;#else/* for historic reasons, C++ links against gulong GTypes */ typedef gulong GType;#endif<1>.gsize主线: ---->typedef gsize GType;.原创 2020-11-12 21:57:26 · 1844 阅读 · 0 评论 -
Makefile.am、Makefile.in、Makefile、configure.ac关系(十二)
1.Makefile.am: 是一些编译的选项及要进行编译的文件项.bin = testLIBRARIES = libtest.aSOURCES = test.c2.Makefile.in: 是由Makefile.am和configure.ac的基础之上而生成的.3.Makefile: 使用生成的configure脚本根据Makefile.in中的内容进行生成的....原创 2020-07-08 21:08:09 · 1194 阅读 · 0 评论 -
Gstreamer1.16.2与Glib2 signals关键字冲突解决(十一)
报错:GDBusSignalInfo **signals error: expected unqualified-id before 'public'.原因:signals为QT关键字. 但是在glib2里把signals当做变量来使用,两者需要做兼容处理.解决方案:1.在xxx.pro文件加入CONFIG += no_keywords2.将项目文件使用public signalspublic slotsemit 这三个关键字的地方统统改为QT的宏:Q_SIGNALS (or Q.原创 2020-09-22 15:28:34 · 1083 阅读 · 0 评论 -
Linux编译 --prefix和DESTDIR用法(十)
1.configure + make# ./configure --prefix=/usr --build=x86_64-unknown-linux-gnu --host=arm-none-linux-gnueabi# make -j8# make install DESTDIR=/home2.meson + ninja# meson build --prefix=/usr -Dgtk_doc=disabled -Dtests=disabled# DESTDIR=/home ninja -C.原创 2020-07-14 20:35:15 · 2775 阅读 · 0 评论 -
Glib2之spec编译打包rpm(九)
1.下载codehttps://git.sailfishos.org/mer-core/gst-plugins-base查看branch 下载对应版本:gst-plugins-base 1.16.22.编写test.spec# emacs test.spec%define majorminor 1.0%define gstreamer gstreamerName: %{gstreamer}%{majorminor}-plugins-baseVersion: 1.16.2R.原创 2020-07-14 11:25:19 · 563 阅读 · 0 评论 -
Linux meson + ninja编译安装源码(八)
1.生成ninja需要的中间文件# meson build --prefix=/home/test/usr注意:--prefix:指定安装的位置build:编译源码暂时生成的中间文件位置2.编译# ninja -C build3.安装到/home/test/usr目录下# ninja -C build install...原创 2020-07-14 11:30:54 · 7070 阅读 · 0 评论 -
Glib2:error: Installed (but unpackaged) files found(七)
报错:Processing files: php-debuginfo-5.3.10-1.x86_64Checking for unpackaged file(s): /usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/error: Installed (but unpackaged) file(s) found:解决:# vi /usr/lib/rpm/macros //注释掉以下内容%__check_files %{_rpmconfigdir.原创 2020-07-09 20:22:49 · 743 阅读 · 0 评论 -
Glib2: undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)问题(六)
报错:undefined reference to `std::__throw_out_of_range_fmt(char const*, ...)解决:# emacs configure.ac CXXFLAGS='-D_GLIBCXX_USE_CXX11_ABI=0'原创 2020-07-08 21:20:46 · 3517 阅读 · 0 评论 -
Glib2之dbus用法(五)
1.安装所需库# sudo apt install libdbus-glib-1-dev libdbus-1-dev libglib2.0-dev2.send_signal.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dbus/dbus-glib.h>#include <dbus/dbus.h>#include <unistd.h.原创 2020-06-12 20:05:09 · 618 阅读 · 0 评论 -
Glib2中G_DEFINE_TYPE原理(四)
#define G_DEFINE_TYPE(TN, t_n, T_P) G_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {}) #define G_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) _G_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _G_DEFINE_TYPE_EXTENDED_END() #define _G_DEFINE_TYPE_.原创 2020-06-12 13:31:36 · 1009 阅读 · 0 评论 -
Glib2版本差异初始化(三)
注意:glib 2.36之前版本,mian()里需要调用 g_type_init()函数来初始化库GObject type system!!!glib 2.36之前版本,mian()里需要调用 g_type_init()函数来初始化库GObject type system!!!glib 2.36之前版本,mian()里需要调用 g_type_init()函数来初始化库GObject type system!!!...原创 2020-06-11 20:37:52 · 864 阅读 · 0 评论 -
ANSI C和Glib C区别(二)
C语言自身并没有提供IO,内存管理,字符串操作等类似的机制。作为弥补,C语言有一个标准库帮助C语言实现这些机制。我们在编译C程序的时候基本上都需要链接到这些库文件。 GNU C Library定义ISO C标准还有其他一些标准(POSIX)规定的函数库。...原创 2020-06-11 10:43:51 · 495 阅读 · 0 评论 -
Glib2之gobject G_DEFINE_TYPE用法(一)
1.my_demo.h#ifndef _MY_DEMO_H_#define _MY_DEMO_H_#include <glib-object.h>#ifdef __cplusplusextern "C" {#endif//宏#define MY_TYPE_DEMO (my_demo_get_type())#define MY_DEMO(object) G_TYPE_CHECK_INSTANCE_CAST((object), MY_TYPE_DEMO, MyDemo).原创 2020-06-11 17:40:47 · 1183 阅读 · 0 评论