二元已经用gcc使用被链接:'GCC -lXext' 成功,但libXext似乎没有关联
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
pkg-config --libs lua5.1
-ldl -lm -lrt -Xlinker --export动态-o概念
链接成功 - 但是,当启动应用程序时,由于未定义符号(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)
你确定你没有链接到一个静态libXext库,而不是共享库吗? – nos
我不完全确定,但用'-Wl,-y,XShapeCombineRectangles'运行会显示'/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386- linux-gnu/libXext.so',所以我会说它是动态链接的,对吧? –