我正在尝试在 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 中?
有几种方法可以解决这个问题。最直接的方法是下载包含您需要的目标库的工具链。鉴于这种情况很可能不会发生,这里有一种解决此问题的方法。
我假设你正在使用gcc作为你的交叉编译器。
- 将目标系统所需的所有库复制到某个文件夹
-
在 Makefile(或命令行)中将 CFLAGS(如果是 C++,则为 CXXFLAGS)设置为以下内容:
-L /path/to/target/libs -Wl,-rpath-link /same/path/as/first
请注意,-Wl 和 -rpath-link 没有space他们之间,就必须是这样。
-L添加库路径供编译器查看。第二个论点,-Wl,-rpath-链接添加链接器的路径。你必须两者都有,否则编译器将解析符号,但链接器会抱怨它没有可链接的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)