Обсуждение: BUG #13497: Build with dtrace fails
The following bug has been logged on the website: Bug reference: 13497 Logged by: Daniel (dmilith) Dettlaff Email address: dmilith@gmail.com PostgreSQL version: 9.4.4 Operating system: FreeBSD 10.1 Description: utils/probes.o: In function `dtrace_dof_init': /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0xd7): undefined reference to `elf_version' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x10f): undefined reference to `elf_begin' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x131): undefined reference to `elf_getshdrstrndx' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x13b): undefined reference to `elf_nextscn' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x1a2): undefined reference to `elf_getdata' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x1ce): undefined reference to `elf_getdata' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x1e1): undefined reference to `elf_getdata' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x207): undefined reference to `gelf_getshdr' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x22b): undefined reference to `elf_strptr' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x24e): undefined reference to `elf_nextscn' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x5df): undefined reference to `elf_end' utils/probes.o: In function `fixsymbol': /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x79b): undefined reference to `gelf_getsym' /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0x7d3): undefined reference to `elf_strptr' clang: error: linker command failed with exit code 1 (use -v to see invocation) Makefile:57: recipe for target 'postgres' failed To fix this, I needed to add -lelf to LDFLAGS. The build passes.
dmilith@gmail.com wrote: > utils/probes.o: In function `dtrace_dof_init': > /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0xd7): > undefined reference to `elf_version' > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > Makefile:57: recipe for target 'postgres' failed > > > To fix this, I needed to add -lelf to LDFLAGS. The build passes. Grumble. Isn't this a platform bug? I mean, if you specify to build with dtrace, maybe the -lelf should be implicit, or something. I assume there's a manpage in FreeBSD for this stuff, what does it say? If we need to workaround, I guess we could add a SEARCH_AC_LIBS to configure when DTrace is specified (maybe only on freebsd?). -- Álvaro Herrera http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On 07/22/2015 13:13, Alvaro Herrera wrote: > dmilith@gmail.com wrote: > >> utils/probes.o: In function `dtrace_dof_init': >> /usr/src/cddl/lib/drti/../../../cddl/contrib/opensolaris/lib/libdtrace/common/drti.c:(.text+0xd7): >> undefined reference to `elf_version' >> clang: error: linker command failed with exit code 1 (use -v to see >> invocation) >> Makefile:57: recipe for target 'postgres' failed >> >> >> To fix this, I needed to add -lelf to LDFLAGS. The build passes. > Grumble. > > Isn't this a platform bug? I mean, if you specify to build with dtrace, > maybe the -lelf should be implicit, or something. I assume there's a > manpage in FreeBSD for this stuff, what does it say? > > If we need to workaround, I guess we could add a SEARCH_AC_LIBS to > configure when DTrace is specified (maybe only on freebsd?). > Hi All, Yes, this is a known oddity with FreeBSD specifically, not with PostgreSQL. Discussed here: https://lists.freebsd.org/pipermail/freebsd-dtrace/2015-January/000342.html And addressed in the ports tree as well: https://svnweb.freebsd.org/ports/head/databases/postgresql92-server/Makefile?view=markup#l168 Though, sadly, the need to link -lelf is not clear if you're building from source and not using the ports tree, unless you do some searching around. Hope that helps, Lacey