我正在尝试在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中?
答案 0 :(得分:0)
有几种方法可以解决这个问题。最直接的方法是下载您需要的目标库附带的工具链。鉴于这很可能不会发生,这是解决这个问题的一种方法。
我将假设您使用 gcc 作为交叉编译器。
在Makefile(或命令行)中将CFLAGS(以及CXXFLAGS,如果是C ++)设置为以下内容:
-L / path / to / target / libs -Wl,-rpath-link / same / path / as / first
请注意-Wl和-rpath-link之间没有空格,必须这样。
-L 为编译器添加库路径以供查看。第二个参数 -Wl,-rpath-link 添加链接器的路径。您必须同时拥有这两个,否则编译器将解析符号,但链接器会发出警告说它没有链接nagainst的库。