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

我试图在32位ubuntu系统上交叉编译一个64位可执行文件。 这个工作起来直到链接,因为缺less一个64位的glib2(libglib-2.0.a)而失败。

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

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

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

我将假设你使用gcc作为你的交叉编译器。

  1. 将所有您需要的库复制到目标系统到某个文件夹
  2. 在您的Makefile(或命令行)中将CFLAGS(和C ++的CXXFLAGS)设置为以下内容:

    -L / path / to / target / libs -Wl,-rpath-link / same / path / as / first

请注意,-Wl和-rpath-link之间没有空格 ,必须这样。

-L为编译器添加库路径以查看。 第二个参数-Wl,-rpath-link为链接器添加路径。 你必须有两个,否则编译器将解决的符号,但链接器会抱怨说,它没有图书馆链接nagainst。