Package: gtest Version: 1.6.0-2 Severity: wishlist User: debian-...@lists.debian.org Usertags: ld-as-needed
gtests examples don't build with with ld --as-needed. This is caused by wrong placement of libraries on the commandline. Shared libraries must be placed behind the objects needing their symbols when building with --as-needed. cp -r /usr/share/doc/libgtest-dev/examples/ /tmp cd /tmp/examples/make make ... g++ -I/usr/src/gtest/include -g -Wall -Wextra -lpthread sample1.o sample1_unittest.o gtest_main.a -o sample1_unittest gtest_main.a(gtest-all.o): In function `~ThreadLocal': /usr/include/gtest/internal/gtest-port.h:1336: undefined reference to `pthread_getspecific' /usr/include/gtest/internal/gtest-port.h:1340: undefined reference to `pthread_key_delete' /usr/include/gtest/internal/gtest-port.h:1336: undefined reference to `pthread_getspecific' /usr/include/gtest/internal/gtest-port.h:1340: undefined reference to `pthread_key_delete' gtest_main.a(gtest-all.o): In function `testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::GetOrCreateValue() const': /usr/include/gtest/internal/gtest-port.h:1372: undefined reference to `pthread_getspecific' /usr/include/gtest/internal/gtest-port.h:1379: undefined reference to `pthread_setspecific' gtest_main.a(gtest-all.o): In function `testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::CreateKey()': /usr/include/gtest/internal/gtest-port.h:1365: undefined reference to `pthread_key_create' gtest_main.a(gtest-all.o): In function `testing::internal::ThreadLocal<std::vector<testing::internal::TraceInfo, std::allocator<testing::internal::TraceInfo> > >::CreateKey()': /usr/include/gtest/internal/gtest-port.h:1365: undefined reference to `pthread_key_create' gtest_main.a(gtest-all.o): In function `testing::internal::ThreadLocal<testing::TestPartResultReporterInterface*>::GetOrCreateValue() const': /usr/include/gtest/internal/gtest-port.h:1372: undefined reference to `pthread_getspecific' /usr/include/gtest/internal/gtest-port.h:1379: undefined reference to `pthread_setspecific' collect2: ld returned 1 exit status In line 80 of that makefile lpthread must be placed at the end of the line or -pthread should be used. see also: https://bugs.launchpad.net/ubuntu/+source/gtest/+bug/985837
Description: fix build with ld --as-needed libraries must be behind objects (including static libraries) Author: Julian Taylor <jtay...@ubuntu.com> --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -8,9 +8,9 @@ -DEXAMPLESDIR=\"$(top_srcdir)/tests/files\" LDADD = \ + $(PLANNER_LIBS) \ $(top_builddir)/src/libplannerapp.la \ - $(top_builddir)/libplanner/libplanner-1.la \ - $(PLANNER_LIBS) + $(top_builddir)/libplanner/libplanner-1.la check_LTLIBRARIES = libselfcheck.la @@ -21,19 +21,19 @@ check_PROGRAMS = $(TESTS) scheduler_test_SOURCES = scheduler-test.c -scheduler_test_LDADD = $(LDADD) libselfcheck.la +scheduler_test_LDADD = libselfcheck.la $(LDADD) time_test_SOURCES = time-test.c -time_test_LDADD = $(LDADD) libselfcheck.la +time_test_LDADD = libselfcheck.la $(LDADD) calendar_test_SOURCES = calendar-test.c -calendar_test_LDADD = $(LDADD) libselfcheck.la +calendar_test_LDADD = libselfcheck.la $(LDADD) task_test_SOURCES = task-test.c -task_test_LDADD = $(LDADD) libselfcheck.la +task_test_LDADD = libselfcheck.la $(LDADD) cmd_manager_test_SOURCES = cmd-manager-test.c -cmd_manager_test_LDADD = $(LDADD) libselfcheck.la +cmd_manager_test_LDADD = libselfcheck.la $(LDADD) TESTS_ENVIRONMENT = \ PLANNER_STORAGEMODULEDIR=$(top_builddir)/libplanner/.libs \
signature.asc
Description: OpenPGP digital signature