thanks, it worked<br><br>On Friday, 15 July 2016, Dmitry V. Levin <<a href="mailto:ldv@altlinux.org">ldv@altlinux.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Fri, Jul 15, 2016 at 10:43:02AM +0800, Daniel Graczer wrote:<br>
> hi, I am trying to compile strace under Ubuntu 12, and it succeeds<br>
> initially. However if I define the USE_LIBINWIND macro in <a href="http://config.h.in" target="_blank">config.h.in</a><br>
<br>
The only supported way of enabling -k option is configure --with-libunwind.<br>
<br>
If you are editing config.h* manually, it's up to you to ensure<br>
correctness of your changes.<br>
<br>
> (I want to use the -k option for stack trace) the linking fails. I tried to<br>
> manually link against the libunwind library, but that library doesn't have<br>
> the functions strace is complaining about.<br>
<br>
If you manually link strace, you are doing it on your own risk.<br>
<br>
> gcc -Wall -Wwrite-strings -Wsign-compare  -g -O2   -o strace<br>
> strace-access.o strace-affinity.o strace-aio.o strace-alpha.o strace-bjm.o<br>
> strace-block.o strace-bpf.o strace-btrfs.o strace-cacheflush.o<br>
> strace-capability.o strace-chdir.o strace-chmod.o strace-clone.o<br>
> strace-copy_file_range.o strace-count.o strace-desc.o strace-dirent.o<br>
> strace-dirent64.o strace-epoll.o strace-evdev.o strace-eventfd.o<br>
> strace-execve.o strace-exit.o strace-fadvise.o strace-fallocate.o<br>
> strace-fanotify.o strace-fchownat.o strace-fcntl.o<br>
> strace-fetch_seccomp_fprog.o strace-fetch_struct_flock.o<br>
> strace-fetch_struct_statfs.o strace-file.o strace-file_handle.o<br>
> strace-file_ioctl.o strace-fs_x_ioctl.o strace-flock.o strace-futex.o<br>
> strace-get_robust_list.o strace-getcpu.o strace-getcwd.o strace-getrandom.o<br>
> strace-hdio.o strace-hostname.o strace-inotify.o strace-io.o strace-ioctl.o<br>
> strace-ioperm.o strace-iopl.o strace-ioprio.o strace-ipc_msg.o<br>
> strace-ipc_msgctl.o strace-ipc_sem.o strace-ipc_shm.o strace-ipc_shmctl.o<br>
> strace-kcmp.o strace-kexec.o strace-keyctl.o strace-ldt.o strace-link.o<br>
> strace-lookup_dcookie.o strace-loop.o strace-lseek.o strace-mem.o<br>
> strace-membarrier.o strace-memfd_create.o strace-mknod.o strace-mount.o<br>
> strace-mq.o strace-mtd.o strace-net.o strace-numa.o strace-open.o<br>
> strace-or1k_atomic.o strace-pathtrace.o strace-perf.o strace-personality.o<br>
> strace-poll.o strace-prctl.o strace-print_mq_attr.o strace-print_msgbuf.o<br>
> strace-print_sigevent.o strace-print_statfs.o strace-print_time.o<br>
> strace-print_timex.o strace-printmode.o strace-printrusage.o<br>
> strace-printsiginfo.o strace-process.o strace-process_vm.o strace-ptp.o<br>
> strace-quota.o strace-readahead.o strace-readlink.o strace-reboot.o<br>
> strace-renameat.o strace-resource.o strace-rtc.o strace-sched.o<br>
> strace-scsi.o strace-seccomp.o strace-sendfile.o strace-sigaltstack.o<br>
> strace-signal.o strace-signalfd.o strace-sigreturn.o strace-sock.o<br>
> strace-socketutils.o strace-sram_alloc.o strace-statfs.o strace-strace.o<br>
> strace-swapon.o strace-syscall.o strace-sysctl.o strace-sysinfo.o<br>
> strace-syslog.o strace-sysmips.o strace-term.o strace-time.o strace-times.o<br>
> strace-truncate.o strace-ubi.o strace-uid.o strace-uid16.o strace-umask.o<br>
> strace-umount.o strace-uname.o strace-userfaultfd.o strace-util.o<br>
> strace-utime.o strace-utimes.o strace-v4l2.o strace-vsprintf.o<br>
> strace-wait.o strace-xattr.o strace-xmalloc.o -L/var/tmp/libunwind/lib/<br>
> -lunwind libstrace.a<br>
<br>
It's obvious that the link command is wrong, your libunwind related<br>
changes are out of place.  I strongly encourage you to avoid linking<br>
strace manually and use traditional "configure && make" idiom.<br>
You can specify a directory containing libunwind headers and libraries<br>
using --with-libunwind=path-to-libunwind-directory syntax.<br>
<br>
A word to others reading this.  I understand the bug in this manually<br>
formed link command is trivial, but please don't fix it.  If users abandon<br>
supported interfaces and start issuing link commands manually,<br>
it's up to them to learn various features of GNU ld like --as-needed<br>
and how they affect linking.<br>
<br>
<br>
--<br>
ldv<br>
</blockquote>