| Summary: | [kdeinit4] ld: fatal: symbol referencing errors | ||
|---|---|---|---|
| Product: | [Unmaintained] kdelibs | Reporter: | Thorsten Hirsch <t.hirsch> |
| Component: | general | Assignee: | kdelibs bugs <kdelibs-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | ||
| Priority: | NOR | ||
| Version First Reported In: | 4.3 | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Solaris | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Thorsten Hirsch
2009-10-22 00:15:54 UTC
Here's the output of truss (w/o ENOENT lines) for the c++/ld command that fails:
$ cat /tmp/truss.txt.no_enoent
execve("/usr/sfw/bin/c++", 0x08047338, 0x080473B4) argc = 30
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xCFFB0000
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xCFFA0000
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xCFF90000
memcntl(0xCFFBD000, 29892, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
memcntl(0x08050000, 9552, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
resolvepath("/usr/sfw/bin/c++", "/usr/sfw/bin/c++", 1023) = 16
sysconfig(_CONFIG_PAGESIZE) = 4096
stat64("/usr/sfw/bin/c++", 0x08046FBC) = 0
open("/var/ld/ld.config", O_RDONLY) = 3
fstat64(3, 0x08046B4C) = 0
mmap(0x00000000, 128, PROT_READ, MAP_SHARED, 3, 0) = 0xCFF80000
close(3) = 0
stat64("/lib/libc.so.1", 0x080467BC) = 0
resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
open("/lib/libc.so.1", O_RDONLY) = 3
mmapobj(3, MMOBJ_INTERPRET, 0xCFF909E8, 0x08046828, 0x00000000) = 0
close(3) = 0
memcntl(0xCFE20000, 188836, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xCFE10000
mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xCFE00000
getcontext(0x08046E0C)
getrlimit(RLIMIT_STACK, 0x08046E04) = 0
getpid() = 3788 [3787]
lwp_private(0, 1, 0xCFE02A00) = 0x000001C3
setustack(0xCFE02A60)
sysi86(SI86FPSTART, 0xCFF79034, 0x0000133F, 0x00001F80) = 0x00000001
brk(0x080760D0) = 0
brk(0x080760D0) = 0
brk(0x080780D0) = 0
stat64("/usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3", 0x080461E0) = 0
resolvepath("/usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3", "/usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3", 1023) = 44
open("/usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3", O_RDONLY) = 3
mmapobj(3, MMOBJ_INTERPRET, 0xCFE106F0, 0x0804624C, 0x00000000) = 0
close(3) = 0
memcntl(0xCF640000, 6624, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
stat64("/usr/lib/locale/en_US.UTF-8/methods_unicode.so.3", 0x080460D0) = 0
resolvepath("/usr/lib/locale/en_US.UTF-8/methods_unicode.so.3", "/usr/lib/locale/common/methods_unicode.so.3", 1023) = 43
open("/usr/lib/locale/en_US.UTF-8/methods_unicode.so.3", O_RDONLY) = 3
mmapobj(3, MMOBJ_INTERPRET, 0xCFE10DF0, 0x0804613C, 0x00000000) = 0
close(3) = 0
mmap(0x00000000, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xCFDF0000
memcntl(0xCF620000, 3576, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
schedctl() = 0xCFDE2000
sigaction(SIGINT, 0x080471B0, 0x08047230) = 0
sigaction(SIGINT, 0x080471B0, 0x08047230) = 0
sigaction(SIGHUP, 0x080471B0, 0x08047230) = 0
sigaction(SIGHUP, 0x080471B0, 0x08047230) = 0
sigaction(SIGTERM, 0x080471B0, 0x08047230) = 0
sigaction(SIGTERM, 0x080471B0, 0x08047230) = 0
sigaction(SIGPIPE, 0x080471B0, 0x08047230) = 0
sigaction(SIGPIPE, 0x080471B0, 0x08047230) = 0
sigaction(SIGCLD, 0x080471B0, 0x08047230) = 0
brk(0x080780D0) = 0
brk(0x0807A0D0) = 0
brk(0x0807A0D0) = 0
brk(0x0807C0D0) = 0
resolvepath("/usr/bin/c++", "/usr/sfw/bin/c++", 1024) = 16
resolvepath("/usr/bin/c++", "/usr/sfw/bin/c++", 1024) = 16
access("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/", X_OK) = 0
access("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/", X_OK) = 0
access("CMakeFiles/kdeinit4.dir/kdeinit4_automoc.o", F_OK) = 0
access("CMakeFiles/kdeinit4.dir/kinit.o", F_OK) = 0
access("CMakeFiles/kdeinit4.dir/proctitle.o", F_OK) = 0
access("CMakeFiles/kdeinit4.dir/klauncher_cmds.o", F_OK) = 0
access("/export/home/torti/qt/lib/libQtCore.so", F_OK) = 0
access("../lib/libkdecore.so.5.4.0", F_OK) = 0
access("../lib/libkparts.so.4.4.0", F_OK) = 0
access("../lib/libkio.so.5.4.0", F_OK) = 0
access("/export/home/torti/qt/lib/libQtNetwork.so", F_OK) = 0
access("/export/home/torti/qt/lib/libQtXml.so", F_OK) = 0
access("../lib/libkdeui.so.5.4.0", F_OK) = 0
access("../lib/libkdecore.so.5.4.0", F_OK) = 0
access("/export/home/torti/qt/lib/libQtDBus.so", F_OK) = 0
access("/export/home/torti/qt/lib/libQtCore.so", F_OK) = 0
access("/export/home/torti/qt/lib/libQtSvg.so", F_OK) = 0
access("/export/home/torti/qt/lib/libQtGui.so", F_OK) = 0
access("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/specs", R_OK) = 0
open("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/specs", O_RDONLY) = 3
xstat(2, "/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/specs", 0x080471D0) = 0
brk(0x0807C0D0) = 0
brk(0x0807E0D0) = 0
read(3, " * a s m :\n - - t r a d".., 5628) = 5628
close(3) = 0
brk(0x0807E0D0) = 0
brk(0x080800D0) = 0
sysconfig(_CONFIG_PAGESIZE) = 4096
access("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/", X_OK) = 0
xstat(2, "/usr/sfw/libexec/gcc/i386-pc-solaris2.11/3.4.3/collect2", 0x08047150) = 0
access("/usr/sfw/libexec/gcc/i386-pc-solaris2.11/3.4.3/collect2", X_OK) = 0
xstat(2, "/usr/sfw/libexec/gcc/i386-pc-solaris2.11/3.4.3/.", 0x08047130) = 0
xstat(2, "/usr/sfw/libexec/gcc/i386-pc-solaris2.11/3.4.3/.", 0x08047130) = 0
xstat(2, "/usr/sfw/libexec/gcc/i386-pc-solaris2.11/.", 0x08047130) = 0
xstat(2, "/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/.", 0x08047130) = 0
xstat(2, "/usr/sfw/lib/gcc/i386-pc-solaris2.11/.", 0x08047130) = 0
xstat(2, "/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/.", 0x08047130) = 0
brk(0x080800D0) = 0
brk(0x080820D0) = 0
access("/usr/lib/crt1.o", R_OK) = 0
access("/usr/lib/crti.o", R_OK) = 0
access("/usr/lib/values-Xa.o", R_OK) = 0
access("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/crtbegin.o", R_OK) = 0
xstat(2, "/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/.", 0x08046230) = 0
xstat(2, "/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/../../../.", 0x08046230) = 0
access("/usr/sfw/lib/gcc/i386-pc-solaris2.11/3.4.3/crtend.o", R_OK) = 0
access("/usr/lib/crtn.o", R_OK) = 0
xstat(2, "/usr/sfw/libexec/gcc/i386-pc-solaris2.11/3.4.3/collect2", 0x080470A0) = 0
access("/usr/sfw/libexec/gcc/i386-pc-solaris2.11/3.4.3/collect2", X_OK) = 0
forkx(0) = 3789
lwp_sigmask(SIG_SETMASK, 0x00000000, 0x00000000) = 0xFFBFFEFF [0x0000FFFF]
ld: warning: file ../lib/libkdecore.so.5.4.0: attempted multiple inclusion of file
ld: warning: file /export/home/torti/qt/lib/libQtCore.so: attempted multiple inclusion of file
Undefined first referenced
symbol in file
__xnet_connect CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
__xnet_socket CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
accept CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
listen CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
setsockopt CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
__xnet_socketpair CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
__xnet_bind CMakeFiles/kdeinit4.dir/kinit.o (symbol belongs to implicit dependency /lib/libsocket.so.1)
ld: fatal: symbol referencing errors. No output written to ../bin/kdeinit4
collect2: ld returned 1 exit status
Received signal #18, SIGCLD, in waitid() [default]
siginfo: SIGCLD CLD_EXITED pid=3789 status=0x0001
waitid(P_PID, 3789, 0x080470D0, WEXITED|WTRAPPED) = 0
_exit(1)
Okay, now I know why. The file... kde/build/KDE/kdelibs/kinit/CMakeFiles/kdeinit4.dir/link.txt ...is missing the entry... -lsocket ...so the linker doesn't link against the socket library and that's why these symbols are finally not being resolved. So my question is: why is -lsocket missing? Who's responsible for creating link.txt? I guess it's cmake, but I had the same problem with cmake 2.6.x and now I habe it with cmake 2.8.0. Maybe there's also some entry missing in a kde build system file...? Or has it something to do with pkg-config? Can you test wether it helps to add ${KINIT_SOCKET_LIBRARY} in line 47 of kdelibs/kinit/CMakeLists.txt after the ${kdeinit_LIBS}?
Patch would be:
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt (revision 1062335)
+++ CMakeLists.txt (working copy)
@@ -44,7 +44,7 @@
kde4_add_executable(kdeinit4 NOGUI ${kdeinit_SRCS})
endif (APPLE OR WIN32)
-target_link_libraries(kdeinit4 ${KDE4_KDECORE_LIBS} ${kdeinit_LIBS} )
+target_link_libraries(kdeinit4 ${KDE4_KDECORE_LIBS} ${kdeinit_LIBS} ${KINIT_SOCKET_LIBRARY} )
if (Q_WS_X11)
target_link_libraries(kdeinit4 ${X11_X11_LIB})
endif(Q_WS_X11)
Yes, that's it! Thank you very much, Andreas! SVN commit 1062561 by apaku: Fix linkage on systems where libsocket.so exists. kdeinit4 uses sockets, so needs to link against the library. BUG:211389 M +1 -1 CMakeLists.txt WebSVN link: http://websvn.kde.org/?view=rev&revision=1062561 |