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

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中?
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为链接器添加路径。您必须同时拥有两者,否则编译器将解析符号,但链接器将抱怨找不到要链接的库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接