我试图在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作为你的交叉编译器。
在您的Makefile(或命令行)中将CFLAGS(和C ++的CXXFLAGS)设置为以下内容:
-L / path / to / target / libs -Wl,-rpath-link / same / path / as / first
请注意,-Wl和-rpath-link之间没有空格 ,必须这样。
-L为编译器添加库路径以查看。 第二个参数-Wl,-rpath-link为链接器添加路径。 你必须有两个,否则编译器将解决的符号,但链接器会抱怨说,它没有图书馆链接nagainst。