glib交叉编译说明

http://gtk-doc-cn.googlecode.com/svn/docs/glib/glib-cross-compiling.html

交叉编译GLib软件包

交叉编译GLib软件包 — 如何交叉编译GLib

 

在不同的体系结构中编译在不同的体系结构中编译

编译出来的程序或库将在不同的平台或操作系统上运行时, 这种编译过程就叫做交叉编译。 GLib和一些常见软件包的交叉编译稍微有些不同, 因为GLib需要隐藏不同系统之间的一些差异。

下面说明一些GLib交叉编译时的特殊之处, 一般的交叉编译信息请查看autoconf信息页。

GLib在编译和链接时会努力去尝试检测尽可能多的有关 目标系统的信息。但是,GLib需要的一些信息不是通过 这种方式的。这些信息通过一个"cache文件"提供给配置 (configure)脚本或者通过设置环境变量的方式实现。

作为一份示例的cache文件,用于在Linux系统上采用"MingW32"交叉 编译可运行于Win32环境中的GLib。 创建一个名为'win32.cache'的文件,包含以下内容:

 
glib_cv_long_long_format=I64
glib_cv_stack_grows=no
      

接着执行以下命令:

PATH=/path/to/mingw32-compiler/bin:$PATH
chmod a-w win32.cache   # prevent configure from changing it
./configure --cache-file=win32.cache --host=mingw32
      

下面列出了cache文件的全部变量。其中一些变量通常并不需要设置。

缓存文件变量

glib_cv_long_long_format=[ll/q/I64]. 为64位整形数而使用于printf()scanf()函数的格式化部分。 "ll" 是C99的标准, 被'trio'库使用来编译GLib, 如果你的printf()函数不能胜任的话。 如果你正在编译使用trio的话是不需要设置的。

glib_cv_stack_grows=[yes/no]. 堆栈是否向上或向下增长。大多数地方都需要设置为"no", 有几个体系结构,如PA-RISC等需要设置为"yes"。

glib_cv_working_bcopy=[yes/no]. bcopy()函数是否可以处理重叠的复制。 如果你没有memmove(), 就需要设置。(可能性非常小)

glib_cv_sane_realloc=[yes/np]. 是否realloc()函数符合ANSI C标准并能够处理第一个参数为NULL的情况。 默认为"yes", 你可能并不需要设定它。

glib_cv_have_strlcpy=[yes/no]. 是否有匹配OpenBSD的strlcpy()函数。 默认值为"no",这是安全的,因为在这种情况下GLib使用内置的版本。

glib_cv_have_qsort_r=[yes/no].  Whether you have qsort_r() that matches BSD. Defaults to "no", which is safe, since GLib uses a built-in version in that case.

glib_cv_va_val_copy=[yes/no]. va_list是否可以作为指针复制。 如果设置为"no",那么memcopy()将被使用。 如果你没有va_copy()__va_copy()会有问题。(所以,GCC不存在问题。) 默认为"yes",这种情况比"no"要多一些。

glib_cv_rtldglobal_broken=[yes/no]. 是否在OSF/1 v5.0中发现存在有bug。默认为"no"。

glib_cv_uscore=[yes/no].  Whether an underscore needs to be prepended to symbols when looking them up via dlsym(). Only needs to be set if your system uses dlopen()/dlsym().

ac_cv_func_posix_getpwuid_r=[yes/no]. 是否你的getpwuid_r函数(在你的C库,而不是线程库)遵守POSIX规范。 接受'struct passwd **'作为最终的参数。

ac_cv_func_nonposix_getpwuid_r=[yes/no]. 是否你有一些getpwuid_r()函数的变量不能遵守POSIX规范,但是GLib有能力去使用它(或者发生段错误)。只有在ac_cv_func_posix_getpwuid_r没被设置的情况下才需要设置此变量。此变量可以安全地被设置为"no".

ac_cv_func_posix_getgrgid_r=[yes/no]. 是否你有一个getgrgid_r函数去遵守POSIX规范。

glib_cv_use_pid_surrogate=[yes/no]. 是否使用setpriority()函数在线程的PID上, 作为设置线程优先级的方式。 只有在使用POSIX线程的时候需要设置。

ac_cv_func_printf_unix98=[yes/no]. 是否你的printf()函数支持Unix98样式的%N$位置参数。 默认为"no"。

ac_cv_func_vsnprintf_c99=[yes/no]. 是否你有一个vsnprintf()函数符合C99的。 (C99语义的意思是返回字符数,被写到输入缓存有足够的空间)。 默认为"no"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值