3

我正在尝试在 32 位 ubuntu 系统上交叉编译 64 位可执行文件。这一直有效,直到链接,由于缺少 64 位 glib2 (libglib-2.0.a) 而失败。

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

我的问题是:我如何手动做getlibs应该做的,即安装一个64位的glib2到/usr/lib64?

4

1 回答 1

0

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

我将假设您使用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添加链接器的路径。您必须同时拥有两者,否则编译器将解析符号,但链接器会抱怨它没有要链接的库。

于 2011-03-23T00:14:23.240 回答