Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: -ldl flag in Makefile voor xawtv4  (gelezen 3007 keer)

Offline kuifje09

  • Lid
-ldl flag in Makefile voor xawtv4
« Gepost op: 2018/04/04, 12:04:20 »
Ik probeer xawtv4 te compileren, en na de error in de autoconfig file loopt het nu vast op het niet kunnen vinden van:

  LD      console/streamer
libng/libng.a(grab-ng.o): In function `ng_plugins':
/home/.../xawtv4/libng/grab-ng.c:1123: undefined reference to `dlopen'
/home/.../xawtv4/libng/grab-ng.c:1124: undefined reference to `dlerror'
collect2: error: ld returned 1 exit status
make: *** [console/streamer] Error 1

Dat duidt op een probleem met de -ldl flag, Maar, waar laat ik die.
Ik heb hem al op meerdere plaatsen in de Makefile tussengeplaatst, maar niks lijkt te helpen?

Makefile:

srcdir      := .
VPATH      := $(srcdir)

# for override by package builds (buildroot install + no root privs needed)
DESTDIR      :=
SUID_ROOT   := -m4755 -o root

# install paths
prefix      := /usr/local
exec_prefix   := ${prefix}
bindir      := $(DESTDIR)${exec_prefix}/bin
mandir      := $(DESTDIR)${prefix}/share/man
libdir      := $(DESTDIR)${exec_prefix}/lib/xawtv4
datadir      := $(DESTDIR)${prefix}/share/xawtv
localedir   := $(DESTDIR)${prefix}/share/locale
resdir      := $(DESTDIR)/etc/X11
config      := /etc/X11/xawtvrc

# programs
CC      := gcc
CXX      := g++
INSTALL      := /usr/bin/install -c
INSTALL_PROGRAM := ${INSTALL} -s
INSTALL_DATA   := ${INSTALL} -m 644
INSTALL_DIR   := /usr/bin/install -c -d -m 755

# misc
VERSION      := 4.0-pre
PACKAGE      := xawtv
ifneq ($(wildcard .snapshot),)
  SNAPSHOT   += SNAPSHOT $(shell cat .snapshot)
endif

# for CFLAGS
cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
             > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)

WARN_FLAGS   := -Wall
WARN_FLAGS   += -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith
# gcc4 is insane pedantic for character pointers :-/
WARN_FLAGS   += $(call cc-option, -Wno-pointer-sign)

LFS_FLAGS   := -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
X11_FLAGS   :=  -I/usr/include/freetype2   -I/usr/X11R6/include/X11/fonts
LIB_FLAGS   := -I. -I./vbistuff -I./x11 \
         -I$(srcdir)/jwz -I$(srcdir)/common -I$(srcdir)/console \
         -I$(srcdir)/x11 -I$(srcdir)/structs \
         -I$(srcdir)/libng -Llibng

# X11 stuff
X11_LIBS   :=  -lXft   -lXrender -lXinerama
ATHENA_LIBS   := $(X11_LIBS) -lXaw -lXmu -lXt  -lSM -lICE -lXpm -lXext -lX11 
MOTIF_LIBS   := $(X11_LIBS) -lXm -lXmu -lXt  -lSM -lICE \
         -lXp -lXpm -lXext -lX11

# gtk2 stuff
GTK_CFLAGS   := -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz 
GTK_CFLAGS   += -Wno-strict-prototypes  # fsck gtk+ header files
GTK_LIBS   := -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype    -lXft   -lXrender -lXinerama

# various libraries
THREAD_LIBS   := -lpthread
CURSES_LIBS   := -lncurses
LIRC_LIBS   :=
OSS_LIBS   :=
ALSA_LIBS   := -lasound
MAD_LIBS   := -lmad
MPEG2_LIBS   :=
AA_LIBS      :=
QT_LIBS      :=
VBI_LIBS   :=
GL_LIBS      := -lGL -lm
DV_LIBS      :=
FS_LIBS      := -L -lFS
ICONV_LIBS   :=
DLFLAGS      := -ldl -Wl,-E

ARTS_FLAGS      :=
ARTS_LIBS   :=

# stuff configure has found
FOUND_AALIB   := no
FOUND_ALSA   := yes
FOUND_ARTS   := no
FOUND_DV   := no
FOUND_DVB   := yes
FOUND_GL   := yes
FOUND_GTK   := yes
FOUND_LQT   := no
FOUND_MAD   := yes
FOUND_MPEG2   := no
FOUND_MOTIF   := yes
FOUND_OS   := linux
FOUND_X11   := yes
FOUND_ZVBI   := no
USE_MMX      := no

# build final cflags
CFLAGS   := -g -O2 
CFLAGS   += $(WARN_FLAGS)
CFLAGS   += $(LFS_FLAGS)
CFLAGS   += $(X11_FLAGS)
CFLAGS   += $(LIB_FLAGS)
CFLAGS   += -DCONFIGFILE='"$(config)"'
CFLAGS   += -DLIBDIR='"$(libdir)"'
CFLAGS   += -DDATADIR='"$(datadir)"'
CFLAGS   += -DLOCALEDIR='"$(localedir)"'
CFLAGS   += -DPACKAGE='"$(PACKAGE)"'
CFLAGS   += -DVERSION='"$(VERSION)"'
CXXFLAGS := $(CFLAGS)

# for gcc3
#CFLAGS   += -std-gnu99

# shared objects need -fPIC
%.so : CFLAGS   += -fPIC
%.so : CXXFLAGS += -fPIC

# libraries
LDLIBS  :=
LDFLAGS :=


#########################################################
# targets

build: all

Makefile: $(srcdir)/Makefile.in $(srcdir)/configure
   $(srcdir)/configure

$(srcdir)/configure: $(srcdir)/configure.ac
   (cd $(srcdir); ./autogen.sh)

install:: all
   $(INSTALL_DIR) $(bindir)

clean::
   find . -name \*~ -print | xargs rm -f
   find . -name \*.o -print | xargs rm -f
   find . -name \*.a -print | xargs rm -f
   find . -name \*.dep -print | xargs rm -f
   rm -f $(depfiles)

distclean:: clean
   -rm -f Makefile Make.config
   -rm -f config.cache config.h config.log config.status
   cp Makefile.clean Makefile

realclean:: distclean
   find . -name snap0*.ppm  -print | xargs -i rm -f
   find . -name snap0*.jpeg -print | xargs -i rm -f
   find . -name .nfs* -print | xargs -i rm -f
   find . -name core.* -print | xargs -i rm -f


#########################################################
# some rules ...

include $(srcdir)/mk/Compile.mk

%.h: %.in
   perl $(srcdir)/scripts/html.pl < $< > $@

%.h: %.ad
   perl $(srcdir)/scripts/fallback.pl < $< > $@


#########################################################
# include stuff

# must come first
include $(srcdir)/common/Subdir.mk

# subdirs
include $(srcdir)/console/Subdir.mk
include $(srcdir)/debug/Subdir.mk
include $(srcdir)/frequencies/Subdir.mk
include $(srcdir)/libng/Subdir.mk
include $(srcdir)/libng/plugins/Subdir.mk
include $(srcdir)/libng/contrib-plugins/Subdir.mk
include $(srcdir)/man/Subdir.mk
include $(srcdir)/scripts/Subdir.mk
include $(srcdir)/vbistuff/Subdir.mk
include $(srcdir)/x11/Subdir.mk
include $(srcdir)/gtk/Subdir.mk

# dependencies
-include $(depfiles)


#########################################################
# translations

I18N_SRCS := $(wildcard gtk/*.c)
LANGUAGES := $(patsubst po/%.po,%,$(wildcard po/*.po))

po/xawtv.pot: $(I18N_SRCS)
   xgettext -s -o $@ -d xawtv -k -k_ -knoop $(I18N_SRCS)

%.pox: %.po po/xawtv.pot
   msgmerge -o $@ $^

%.mo: %.po
   msgfmt -o $@ $<

.PHONY: merge
merge: $(patsubst %,po/%.pox,$(LANGUAGES))

all:: $(patsubst %,po/%.mo,$(LANGUAGES))

install:: install-lang

.PHONY: install-lang
install-lang: $(patsubst %,install-mo-%,$(LANGUAGES))

install-mo-%: po/%.mo
   $(INSTALL_DIR) $(localedir)/$*/LC_MESSAGES
   $(INSTALL_DATA) $< $(localedir)/$*/LC_MESSAGES/$(PACKAGE).mo

clean::
   rm -f po/xawtv.pot
   rm -f po/*.mo

realclean::
   rm -f po/*.pox


#########################################################
# just for me, some maintaining jobs.  Don't use them

PRESULT := /work/pbuilder/result

PACKAGE := xawtv
DEBARCH := $(shell uname -m | sed   \
      -e 's/i.86/i386/'   \
      -e 's/ppc/powerpc/')
DEBVER   = $(shell dpkg-parsechangelog | sed -n 's/^Version: \(.*:\|\)//p')
DSC     := $(PACKAGE)_$(VERSION).dsc
CHANGES := $(PACKAGE)_$(VERSION)_$(DEBARCH).changes


dsc source ../$(DSC): clean
   test "$(VERSION)" = "$(DEBVER)"
   rm -f .snapshot
   dpkg-buildpackage -S -us -uc -rfakeroot

debs pbuild $(PRESULT)/$(CHANGES): ../$(DSC)
   sudo /usr/sbin/pbuilder build ../$(DSC)
   -lintian -i $(PRESULT)/$(CHANGES)

release: $(PRESULT)/$(CHANGES)
   debsign $(PRESULT)/$(CHANGES)


tarball: distclean
   rm -f .snapshot
   (cd ..; tar cvzf xawtv_$(VERSION).tar.gz \
      xawtv-$(VERSION))

rpm: tarball
   rpm -ta ../xawtv_$(VERSION).tar.gz

snapshot snap: distclean
   date +%Y%m%d > .snapshot
   (cd ..; tar cvzf $(HOME)/snapshot/xawtv-`date +%Y%m%d`.tar.gz \
      xawtv-$(VERSION))
   $(MAKE) -C $(HOME)/snapshot
« Laatst bewerkt op: 2018/04/04, 12:20:47 door kuifje09 »

Re: -ldl flag in Makefile voor xawtv4
« Reactie #1 Gepost op: 2018/04/07, 11:44:24 »
Kuifje,

Met het compileren vanaf broncode moet autoconf en configure zonder foutmeldingen worden uitgevoerd.
Maw, eerst zal je deze foutmelding moeten rechtzetten.
In 99 van de 100 gevallen ontbreken van een bepaalde bibliotheek (lib) de 'development' pakket (devel).

MvG,
MauRice
Registered Linux user: 473556

Offline kuifje09

  • Lid
Re: -ldl flag in Makefile voor xawtv4
« Reactie #2 Gepost op: 2018/04/14, 15:54:28 »
Nee, ik mis geen libs, voor zover ik kan nagaan... Er zitten gewoon fouten in de makefile.
Het begon al met de autoconf, nog ergens een fout... weet niet meer wat.

Dat kan ik oplossen, maar er is nu een volgorde fout in de aanroep van de libraries bij het linken.
Veel mensen struikelen erover, de -ldl komt kennelijk op de verkeerde plek terecht.
Ongetwijfeld een gevolg van een verandering in de compiler/linker ?

Maar ik heb het al aan de kant gezet, want ik vermoed dat na deze fout, er nog wel een paar lijken te voorschijn komen.
Kreeg ik myth-tv maar aan de praat... Dat is zo complex, begrijp ik echt niet.
Ik heb 1 moment naar de composite van de tv-kaart gekeken, daarna vertikte hij het ? geen idee hoe dat allemaal zit.

Re: -ldl flag in Makefile voor xawtv4
« Reactie #3 Gepost op: 2018/04/14, 19:35:12 »
Kuifje,

Kan zijn dat de broncode te oud is en niet meer onderhouden wordt, zo te lezen op "linuxtv.org".
Alleen de 3.x versie krijg nog wel eens van tijd tot tijd een bug-update.
https://linuxtv.org/projects.php
MvG,
MauRice
Registered Linux user: 473556

Offline jolo

  • Lid
Re: -ldl flag in Makefile voor xawtv4
« Reactie #4 Gepost op: 2018/04/14, 21:04:30 »
Ik had het compileren van xawtv4 hier ook geprobeerd. Ik had al deze pakketten geïnstalleerd in Ubuntu 16.04
autoconf autogen libncurses-dev libv4l-dev libjpeg62-dev libaa1-dev libdv4-dev libxt-dev libfs-dev libxaw7-dev libzvbi-dev libquicktime-dev libasound2-dev libmotif-dev ./autogen.sh leverde geen foutmeldingen op. Alleen een waarschuwing.
<knip>
configure: creating ./config.status
config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating xawtv.spec
config.status: creating config.h

compile time options summary
============================

    aalib        : yes
    alsa         : yes
    dv           : yes
    QuickTime    : yes
    OpenMotif    : yes
    X11R6        : yes
    OpenGL       : yes
    zvbi         : yes
    libv4l       : yes

De output van ./configure had dezelfde waarschuwing
<knip>
config.status: creating Makefile
config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir setting
config.status: creating xawtv.spec
config.status: creating config.h
config.status: config.h is unchanged

compile time options summary
============================

    aalib        : yes
    alsa         : yes
    dv           : yes
    QuickTime    : yes
    OpenMotif    : yes
    X11R6        : yes
    OpenGL       : yes
    zvbi         : yes
    libv4l       : yes

Bij mij eindigt het make commando met ongeveer dezelfde foutmelding.
<knip>
/home/jolo/Downloads/xawtv-3.99.rc6/libng/grab-ng.c:855: undefined reference to `dlopen'
/home/jolo/Downloads/xawtv-3.99.rc6/libng/grab-ng.c:859: undefined reference to `dlsym'
/home/jolo/Downloads/xawtv-3.99.rc6/libng/grab-ng.c:856: undefined reference to `dlerror'
/home/jolo/Downloads/xawtv-3.99.rc6/libng/grab-ng.c:860: undefined reference to `dlsym'
/home/jolo/Downloads/xawtv-3.99.rc6/libng/grab-ng.c:861: undefined reference to `dlerror'
collect2: error: ld returned 1 exit status
mk/Compile.mk:74: recept voor doel 'console/streamer' is mislukt
make: *** [console/streamer] Fout 1

Ik ben het hier eens met MauRice2. Ik vond daarover al deze blog
https://www.kraxel.org/blog/linux/xawtv/

Waarschijnlijk kan er beter gegaan worden voor een andere tv applicatie. Wellicht staat er iets bruikbaars in deze hyperlink https://linuxtv.org/wiki/index.php/TV_Related_Software

Hoofd PC januari 2018 HP Compaq Elite 8300 SFF Windows 10 & Xubuntu 18.04.3
PC 2011 Asus P8Z68-V Pro i7 2600K 8 GB RAM GT730 Xubuntu test pc
PC 2007 Asus P5B E6600 2GB RAM 8800GTS  
Notebook 2008 Lenovo ThinkPad R61i 8932GMG 2,5 GB RAM