git/list[1] front-page[2] threads[3] people[4] search[5] about
 

configure: -lpthread doesn't belong in CFLAGS

From
RCRainer M. Canavan <git@canavan.de>
Date
Nov 1, 2015, 22:30 UTC
Message-ID
<201511012230.tA1MUGa5016836@tezro.nonet>
Hi,

some linkers, namely the one on IRIX are rather strict concerning the order or arguments for symbol resolution, i.e. no libraries listed before objects or other libraries on the command line are considered for symbol resolution. That means that -lpthread can't work if it's put in CFLAGS, because it will not be considered for resolving pthread_key_create in conftest.o. Apparently only $LIBS goes after conftest.o when the linker is called.

Without the patch below, the POSIX Threads with '-lpthread' fails, with the patch it succeeds. I haven't checked if that is relevant at all, since that check is immediately followed by checking for pthread_create in -lpthread... yes

regards,
rainer

--- ../src/git-2.6.2/configure.ac Fri Oct 16 23:58:26 CEST 2015 +++ configure.ac Sun Nov 01 23:19:41 CET 2015

@@ -1126,7 +1126,13 @@
   # would then trigger compiler warnings on every single file we compile.
   for opt in "" -mt -pthread -lpthread; do
      old_CFLAGS="$CFLAGS"
-     CFLAGS="$opt $CFLAGS"
+     old_LIBS="$LIBS"
+     if test "$(echo $opt | cut -b 1-2)" = -l ; then
+        LIBS="$opt $LIBS"
+     else
+        CFLAGS="$opt $CFLAGS"
+     fi
+
      AC_MSG_CHECKING([for POSIX Threads with '$opt'])
      AC_LINK_IFELSE([PTHREADTEST_SRC],
 	[AC_MSG_RESULT([yes])
@@ -1138,6 +1144,7 @@
 	],
 	[AC_MSG_RESULT([no])])
       CFLAGS="$old_CFLAGS"
+      LIBS="$old_LIBS"
   done
   if test $threads_found != yes; then
     AC_CHECK_LIB([pthread], [pthread_create],
Next: Matthieu Moy
Message 1 of 7 in “configure: -lpthread doesn't belong in CFLAGS”
  1. Rainer M. CanavanNov 1, 2015
  2. Matthieu MoyNov 2, 2015
  3. In configure.ac, try -lpthread in $LIBS instead of $CFLAGS to make picky linkers happyRainer M. Canavan, Nov 6, 2015
  4. Matthieu MoyNov 6, 2015
  5. configure.ac: try -lpthread in $LIBS instead of $CFLAGSRainer M. Canavan, Nov 8, 2015
  6. Matthieu MoyNov 8, 2015
  7. Jeff KingNov 20, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.