- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
二进制文件已与 gcc 链接,使用:
gcc notion.o -Wl,-whole-archive ../ioncore/ioncore.a
-Wl,-no-whole-archive -L/usr/X11R6/lib -lX11 -lXext -lSM -lICE
-Wl,-whole-archive -L../libmainloop -lmainloop -lextl -ltu
-Wl,-no-whole-archive <code>pkg-config --libs lua5.1</code> -ldl -lm -lrt -Xlinker
--export-dynamic -o notion
链接成功 - 但是,在启动应用程序时,用户报告由于 undefined symbol (XShapeCombineRectangles
) 而导致崩溃。 XShapeCombineRectangles
应该在 libXext 中可用。
确实,通过“ldd”检查,Xext 并未列为该用户的共享库依赖项:
linux-gate.so.1 => (0x0068f000)libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0x00ec7000)liblua5.1.so.0 => /usr/lib/i386-linux-gnu/liblua5.1.so.0(0x00226000)libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0x005da000)libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x005e1000)librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0x0032c000)libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00335000)libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0x007d6000)/lib/ld-linux.so.2 (0x00882000)libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0(0x006dc000)libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0x00110000)libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6(0x00dd8000)
当我自己编译应用程序时,ldd 确实 显示了 libXext,而且确实没有崩溃。
这里可能发生了什么?
(更多上下文:此错误已在 http://sourceforge.net/tracker/?func=detail&aid=3427206&group_id=314802&atid=1324528 报告)
最佳答案
您的链接器(或 gcc)可能会自动添加 --as-needed
在幕后,在你的系统上XShapeCombineRectangles
来自 libXext 以外的一些库。
您可以找出哪个库定义了 XShapeCombineRectangles
链接中的符号:只需添加 -Wl,-y,XShapeCombineRectangles
到您的链接行。
添加-v
将显示是否有 --as-needed
争论是否在起作用。
您可以强制最终可执行文件引用 libXext
通过附加 -Wl,--no-as-needed,-lXext
到链接行。
更新:我误解了这个问题(你的表述非常糟糕)。
重述:
ldd<br/>
app
显示对 libXext 的依赖ldd app
不显示libXextdlopen("de.so", ...)
在最终用户系统上,这失败了 de.so: undefined symbol XShapeCombineRectangles
如果以上几点是正确的,那很可能是
libXext.a
, 但不是 libXext.so
XShapeCombineRectangles
, 仅在 de.so
中编码做de.so
链接,没有-lXext
在它的链接线上。要么安装libXext.so
,或将主应用程序链接到 -u XShapeCombineRectangles
可能会解决问题。
要了解这个问题,您可能需要阅读 this .
我的猜测是 XShapeCombineRectangles
未从主可执行文件中引用,因此未从 libXext.a
中提取“书架”,因此尽管 --export-dynamic
没有从主可执行文件中导出.
关于linux - 'gcc -lXext' 成功但 libXext 似乎未链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7862870/
我不确定将此问题发布到 stackoverflow 系列是否是正确的部分,所以如果这不是正确的站点,我深表歉意。 我正在尝试在 64 位机器上的 Red Hat Enterprise Linux Se
二进制文件已与 gcc 链接,使用: gcc notion.o -Wl,-whole-archive ../ioncore/ioncore.a -Wl,-no-whole-archive -L/usr
这个问题在这里已经有了答案: Can't find/install libXtst.so.6? (5 个答案) 关闭 3 年前。 运行试图打开 ods 文件的 java 文件时出现以下错误。 Exc
当我尝试在 beta 服务器上部署应用程序时(它基于 linux)。我在 apache-tomcat 日志文件 (localhost.log) 中发现了以下错误。 java.lang.Unsatisf
我是一名优秀的程序员,十分优秀!