arm下交叉编译glib-2.28.8

本文详细介绍了在ARM平台上交叉编译glib-2.28.8时可能遇到的问题及其解决方案,包括configure阶段的错误、glib-compile-schemas找不到、glib-genmarshal版本过老导致的编译错误以及 gio/tests编译时msgfmt版本过老的问题。通过设置环境变量和更新相关工具,成功完成glib-2.28.8的交叉编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

废话不多, 直接上配置:
CC=arm-none-linux-gcc  ./configure --build=i686-linux --host=arm-none-linux \
        glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes \
        ac_cv_func_posix_getgrgid_r=yes ac_cv_lib_rt_clock_gettime=no glib_cv_monotonic_clock=yes
 
 注意如下几点:      
 1. 在configure的时候, 会出现找不到glib-compile-schemas错误,
 解决办法很简单, 就是先用host编译glib-2.28.8, 也就是直接:
 ./configure --prefix=<your glib2 install path>; make; make install
 编译好以后, 设置环境变量PATH=<your glib2 install path>/bin:$PATH即可, 就可以找到glib-compile-schemas了。
 
  2. 在Make的如果还会出现如下错误:
gsimpleaction.c: In function 'g_simple_action_class_init':
gsimpleaction.c:329: error: 'g_cclosure_marshal_VOID__VARIANT' undeclared (first use in this function)
gsimpleaction.c:329: error: (Each undeclared identifier

### glib-2.58.3 交叉编译方法 glib-2.58.3 的交叉编译过程与 glib-2.45.3 类似,但需要特别注意版本更新带来的变化以及可能的依赖项调整。以下是完整的交叉编译流程和注意事项。 #### 环境准备 1. 确保安装了必要的工具链和依赖库,例如 `autoconf`、`automake`、`libtool` 和 `pkg-config`。 2. 下载 glib-2.58.3 源码包并解压到指定目录。 3. 配置交叉编译环境变量,例如: ```bash export CC=arm-linux-gnueabihf-gcc export CXX=arm-linux-gnueabihf-g++ export AR=arm-linux-gnueabihf-ar export RANLIB=arm-linux-gnueabihf-ranlib export PKG_CONFIG_PATH=/path/to/target/lib/pkgconfig export PKG_CONFIG_LIBDIR=/path/to/target/lib/pkgconfig ``` #### 配置阶段 在解压后的 glib-2.58.3 目录中运行以下命令进行配置: ```bash ./configure --host=arm-linux-gnueabihf \ --prefix=/home/dell/personal/liuruipeng/lib/build/glib-2.58.3/install/arm \ --disable-shared \ --disable-tests \ --disable-fam \ --disable-man \ --disable-threads \ --with-pcre=system ``` 上述命令中的选项解释如下: - `--host=arm-linux-gnueabihf`:指定目标架构为 ARM- `--prefix`:设置安装路径。 - `--disable-shared`:禁用共享库生成。 - `--disable-tests`:禁用测试程序编译。 - `--disable-fam`:禁用文件访问监控支持。 - `--disable-man`:禁用手册页生成。 - `--disable-threads`:禁用多线程支持(根据需求可启用)。 - `--with-pcre=system`:使用系统提供的 PCRE 库[^1]。 #### 编译与安装 1. 运行 `make` 命令开始编译: ```bash make -j$(nproc) ``` 2. 安装编译好的文件到指定目录: ```bash make install ``` #### 移植到开发板 完成编译后,将生成的库文件复制到开发板的目标目录: ```bash cd /home/dell/personal/liuruipeng/lib/build/glib-2.58.3/install/arm/lib cp -a libglib-2.0* /nfs/roofts/lib rm /home/dell/personal/liuruipeng/lib/build/glib-2.58.3/install/arm/lib/libglib-2.0.la ``` #### 注意事项 1. **依赖项**:glib-2.58.3 可能需要额外的依赖库,例如 `pcre` 和 `gettext`。确保这些依赖已正确交叉编译[^3]。 2. **国际化问题**:如果遇到 `glibintl.h` 相关错误,可以尝试定义宏 `bind_textdomain_codeset` 的返回值为 `NULL` 或其他合适值[^3]。 3. **兼容性**:确保使用的工具链版本与目标平台匹配。 #### 示例代码 以下是一个简单的测试程序,用于验证交叉编译glib 库是否正常工作: ```c #include <glib.h> int main(int argc, char *argv[]) { GString *str = g_string_new("Hello, "); g_string_append(str, "GLib!"); g_print("%s\n", str->str); g_string_free(str, TRUE); return 0; } ``` 编译命令如下: ```bash arm-linux-gnueabihf-gcc -o test_glib test_glib.c \ -I/home/dell/personal/liuruipeng/lib/build/glib-2.58.3/install/arm/include/glib-2.0 \ -I/home/dell/personal/liuruipeng/lib/build/glib-2.58.3/install/arm/lib/glib-2.0/include \ -L/home/dell/personal/liuruipeng/lib/build/glib-2.58.3/install/arm/lib \ -lglib-2.0 ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值