在32位系统上安装64位glib2进行交叉编译

问题描述:

我试图在32位ubuntu系统上交叉编译64位可执行文件。这可以工作直到链接,由于缺乏64位glib2(libglib-2.0.a)而失败。在32位系统上安装64位glib2进行交叉编译

如果我是在64位系统上执行此操作,我将使用getlibs将32位glib2安装到/ usr/lib32中。但是,在32位机器上,getlibs似乎并没有做相反的事情 - 将64位glib2安装到/ usr/lib64中。

我的问题是:如何手动执行getlibs应该做的事情,即将64位glib2安装到/ usr/lib64中?

有几种方法可以解决这个问题。最直接的方法是下载一个工具链,它附带你需要的目标库。鉴于这很可能不会发生,下面是解决此问题的一种方法。

我打算假设您使用gcc作为您的交叉编译器。

  1. 复制了所有的图书馆,你需要形成目标系统到某个文件夹
  2. 在你的Makefile(或命令行)设置CFLAGS(和CXXFLAGS如果C++)于以下内容:

    -L /路径/到/目标/库-Wl,-rpath链接/相同/路径/为/第一

注意轮候册,并-rpath链接没有空间两者之间对他们来说,它必须是这样的。

-L增加了编译器查看的库路径。第二个参数-WL,-rpath-link为链接器添加路径。你必须拥有两者,否则编译器会解析这些符号,但是链接器会抱怨它没有链接库的库。