cairo-1.14.6 static compiler msys mingw32

gtk2.x 静态编译时 需要注意的是 cairo
cairo 1.14.x 使用了 mutex , 用动态方式时 DllMain 中调用了 CAIRO_MUTEX_INITIALIZE ()
在静态编译时不能自动初始化 mutex , 所以 gtk 静态程序出现错误.
需要在 gtk_init() 中加载 CAIRO_MUTEX_INITIALIZE ();
在 gtk_quit_destroy() 中调用 CAIRO_MUTEX_FINALIZE ();
-------------------------------------------------------------------------------------------------------
build static libs
-------------------------------------------------------------------------------------------------------
export LIBFFI_CFLAGS=" -I/usr/local/lib/libffi-3.2.1/include " export LIBFFI_LIBS=" -lffi " export ZLIB_CFLAGS=-I/usr/local/include export ZLIB_LIBS=-lz export CFLAGS=" -I/usr/local/include -O2 -Wall -march=i686 -mms-bitfields -mthreads -static " export CPPFLAGS=" -I/usr/local/include " export LDFLAGS=" -L/usr/local/lib " export LIBS=‘ -lpsapi -lws2_32 -lmswsock -lpthread -lffi -lole32 -lwinmm -lshlwapi -lintl -liconv -lgdiplus -luuid -lharfbuzz -lharfbuzz-icu -lexpat -lgdi32 -lmsimg32 -lz ‘

# -lsupc++

./configure --prefix=/usr/local --enable-static --disable-shared --disable-gtk-doc --enable-win32 --enable-win32-font

cairo (version 1.14.6 [release]) will be compiled with:

The following surface backends:
  Image:         yes (always builtin)
  Recording:     yes (always builtin)
  Observer:      yes (always builtin)
  Mime:          yes (always builtin)
  Tee:           no (disabled, use --enable-tee to enable)
  XML:           no (disabled, use --enable-xml to enable)
  Skia:          no (disabled, use --enable-skia to enable)
  Xlib:          no (requires X development libraries)
  Xlib Xrender:  no (requires --enable-xlib)
  Qt:            no (disabled, use --enable-qt to enable)
  Quartz:        no (requires CoreGraphics framework)
  Quartz-image:  no (disabled, use --enable-quartz-image to enable)
  XCB:           no (requires xcb >= 1.6 xcb-render >= 1.6 http://xcb.freedesktop.org)
  Win32:         yes
  OS2:           no (disabled, use --enable-os2 to enable)
  CairoScript:   yes
  PostScript:    yes
  PDF:           yes
  SVG:           yes
  OpenGL:        no (disabled, use --enable-gl to enable)
  OpenGL ES 2.0: no (disabled, use --enable-glesv2 to enable)
  BeOS:          no (disabled, use --enable-beos to enable)
  DirectFB:      no (disabled, use --enable-directfb to enable)
  OpenVG:        no (disabled, use --enable-vg to enable)
  DRM:           no (disabled, use --enable-drm to enable)
  Cogl:          no (disabled, use --enable-cogl to enable)

The following font backends:
  User:          yes (always builtin)
  FreeType:      yes
  Fontconfig:    yes
  Win32:         yes
  Quartz:        no (requires CoreGraphics framework)

The following functions:
  PNG functions:   yes
  GLX functions:   no (not required by any backend)
  WGL functions:   no (not required by any backend)
  EGL functions:   no (not required by any backend)
  X11-xcb functions: no (disabled, use --enable-xlib-xcb to enable)
  XCB-shm functions: no (requires --enable-xcb)

The following features and utilities:
  cairo-trace:                no (requires dynamic linker and zlib and real pthreads)
  cairo-script-interpreter:   yes

And the following internal features:
  pthread:       yes
  gtk-doc:       no
  gcov support:  no
  symbol-lookup: no (requires bfd)
  test surfaces: no (disabled, use --enable-test-surfaces to enable)
  ps testing:    no (requires libspectre)
  pdf testing:   no (requires poppler-glib >= 0.17.4)
  svg testing:   no (requires librsvg-2.0 >= 2.35.0)
  win32 printing testing:    no (requires ghostscript)

----------------------------------------------------------------------------------
src/win32/cairo-win32-system.c
----------------------------------------------------------------------------------
/*
 BOOL WINAPI
 DllMain (HINSTANCE hinstDLL,
          DWORD     fdwReason,
          LPVOID    lpvReserved);

 BOOL WINAPI
 DllMain (HINSTANCE hinstDLL,
          DWORD     fdwReason,
          LPVOID    lpvReserved)
 {
     switch (fdwReason) {
         case DLL_PROCESS_ATTACH:
             CAIRO_MUTEX_INITIALIZE ();
             break;

         case DLL_PROCESS_DETACH:
             CAIRO_MUTEX_FINALIZE ();
             break;
     }

     return TRUE;
 } */
----------------------------------------------------------------------------------
__declspec(dllexport)                    fix to -->   __attribute__((visibility ("default")))
define xxx __declspec(dllimport)         fix to -->   define xxx extern
__attribute__((visibility ("hidden")))   fix to -->   __attribute__((visibility ("default")))
delete all DllMain function

src\cairoint.h(54):#define cairo_public __declspec(dllexport)
#define cairo_public __declspec(dllexport)  -> __attribute__((visibility ("default")))

src\cairo.h(55):#  define cairo_public __declspec(dllimport)
#define cairo_public __declspec(dllimport)  ->  extern

src\cairo-compiler-private.h(120):#define cairo_private_no_warn	__attribute__((__visibility__("hidden")))
#define cairo_private_no_warn	__attribute__((__visibility__("hidden"))) -> ("default")

util\cairo-script\cairo-script-private.h(165):#define csi_private_no_warn	__attribute__((__visibility__("hidden")))
#define csi_private_no_warn	__attribute__((__visibility__("hidden"))) -> ("default")

----------------------------------------------------------------------------------
src/cairo.h
----------------------------------------------------------------------------------
cairo_public void cairo_mutex_init();
cairo_public void cairo_mutex_finalize();
----------------------------------------------------------------------------------

----------------------------------------------------------------------------------
src/cairo.c
----------------------------------------------------------------------------------
void cairo_mutex_init()
{
	CAIRO_MUTEX_INITIALIZE ();
}

void cairo_mutex_finalize()
{
	CAIRO_MUTEX_FINALIZE ();
}
----------------------------------------------------------------------------------
链接:http://pan.baidu.com/s/1hrXKrBY 密码:fxh0

_cairo-1.14.6-staticLib.7z

时间: 2025-01-02 16:23:36

cairo-1.14.6 static compiler msys mingw32的相关文章

gtk+-3.21.4 static build step in windows XP

In recent days the weather is very hot Unable to sleep properly Under the state of daze research gtk3 static compiler. ------------------------------------------------------------------------------------------------------- build static libs ---------

windows 下使用 MinGW + msys 编译 ffmpeg

本文参考了网络上的不少文章,但由于版本环境的问题参考文章并不能直接指导编译,本文吸收多方经验,并在自己多次编译实验的基础上写成,欢迎转载,请注名出处.    FFmpeg是在Linux平台下开发的,但它同样可以在其它操作系统环境中编译运行,本文介绍的就是在windows下编译FFmpeg.一 编译准备    您最好新建一个目录专门用来保存以下下载的文件.1 下载 MinGW 和 MSYS    MinGW(Minimalist GNU on Windows):一个可自由使用和自由发布的Windo

Thrift compiler代码生成类解析

代码生成类解析: Thrift--facebook RPC框架,介绍就不说了,百度,google一大把,使用也不介绍,直接上结构和分析吧. Hello.thrift文件内容如下: namespace java com.tomsun.thrift.generated.demo service Hello { string helloString(1:string para) } 内容很简单,申明个RPC service(Hello),服务方法helloString,方法参数格式(seq: para

14.Java中的Future模式

jdk1.7.0_79  本文实际上是对上文<13.ThreadPoolExecutor线程池之submit方法>的一个延续或者一个补充.在上文中提到的submit方法里出现了FutureTask,这不得不停止脚步将方向转向Java的Future模式. Future是并发编程中的一种设计模式,对于多线程来说,线程A需要等待线程B的结果,它没必要一直等待B,可以先拿到一个未来的Future,等B有了结果后再取真实的结果. ExecutorService executor = Executors.

驱动14.字符设备的另一种写法

原本的字符设备只能有255个驱动程序,原因是一个主设备号占用了0~255的次设备号 把register_chrdev展开可得到一下几个部分:register_chrdev_region/alloc_chrdev_region,cdev_init,cdev_add 参照register_chrdev的写法完成hello.c的代码 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/f

用mingw32编译ffmpeg2.7

1.  下载x265最新源码: 下载ffmpeg源码(我用的是2.7): 下载cmake最新版本并安装: 下载SDL(我用的SDL-1.2.15): 下载mingw-get-setup.exe,在"Select Components"步骤中选择: √  C Compiler (默认且一定选择) √  C++ Compiler √  MSYS Basic System(选择此项将会安装msys,msys则不需要另外安装) √  MinGW Developer ToolKit 并apply

static和public

static:静态. 可以设置:静态类.静态变量.静态方法. 没有使用static修饰的成员为实例成员. 静态成员的使用:通过类名. 1.不加static修饰的成员是对象成员,归每个对象所有. 2.加static修饰的成员是类成员,可以由一个类直接调用,为所有对象共有. 用static关键字标识的程序元素是静态的,不用static标识的程序元素是非静态. 两者的区别在于: 静态的东西是在类型加载初始时初始化的,并且与类相关. 非静态东西一般放在实例的构造函数中初始化,它是与特定类的实例相关的.

[C#6] 1-using static成员

1. 老版本写法 1 using System; 2 3 namespace csharp6 4 { 5 internal class Program 6 { 7 private static void Main(string[] args) 8 { 9 Console.WriteLine("blackheart"); 10 } 11 } 12 } 上面这段代码大家再熟悉不过了,使用静态类Console的静态方法WriteLine输出一行字符串.插播点关于CLR的相关知识,CLR在执行

Java基础-学习笔记(九)——static关键字

1.静态成员变量 程序中的类,只是在描述其对象的属性和成员,并没有产生实际对象,只有通过new关键字才能产生出对象,这时系统才会分配内存空间给对象,其方法才能供外部调用. 每生成一个对象,都会在内存中给它分配一个单独的空间,有时候我们希望无论产生多少对象,某些某些特定的数据在内存空间里只有一份,我们只需要在这种数据面前加上statice关键字即可.静态变量在某种程度下与其他语言中的全局变量比较类似.并且,我们可以不需要产生实例对象,直接使用类名来调用,如下代码所示 1 class Chinese