[vdr] difference between "g++ -pthread" and "g++ -lpthread"

Lars Hanisch dvb at flensrocker.de
Sun Apr 14 17:16:13 CEST 2013


Hi,

 I'm hunting some race condition in my plugins which produce a segfault in libc or libavahi (still searching the right
packages with debug symbols, race condition may be related to having to dbus-mainloops in dbus2vdr and avahi4vdr, but I
don't know yet).
 While investigating this I found something about the option "-pthread" of g++.

 According to g++'s manpage this will set the right options for the preprocessor and compiler so the program can use the
pthreads lib. Especially it will set -D_REENTRANT and -lpthread etc.

 vdr seems only to use -lpthread and no other pthread-specific options.

 I'm not an expert on this topic, so I would like to know if someone can shed some light on this.
 Makefile may than be patched with:

==========
--- a/Makefile
+++ b/Makefile
@@ -14,12 +14,12 @@
 CFLAGS   ?= -g -O3 -Wall

 CXX      ?= g++
-CXXFLAGS ?= -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses
+CXXFLAGS ?= -g -O3 -Wall -Werror=overloaded-virtual -Wno-parentheses -pthread

 CDEFINES  = -D_GNU_SOURCE
 CDEFINES += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE

-LIBS      = -ljpeg -lpthread -ldl -lcap -lrt $(shell pkg-config --libs freetype2 fontconfig)
+LIBS      = -ljpeg -ldl -lcap -lrt $(shell pkg-config --libs freetype2 fontconfig)
 INCLUDES ?= $(shell pkg-config --cflags freetype2 fontconfig)

 # Directories:
==========

 Recompiled vdr and plugins do run as before (haven't solved my segfault).

 What do you think?

Lars.



More information about the vdr mailing list