From: ken <gebser@mousecar.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Duplicate symbols due to <emacs dir>/src/termcap.c
Date: Fri, 5 Jan 2018 08:32:45 -0500 [thread overview]
Message-ID: <b8d07334-89d9-e5b7-7a49-0f306728cf3a@mousecar.com> (raw)
In-Reply-To: <CAH8yC8nsa96fntUrURrSmJ4hAeXENU--HmtZno_D+Pmd=U=upA@mail.gmail.com>
On 01/03/2018 05:39 PM, Jeffrey Walton wrote:
> I'm building Emacs from sources. Termcap, Ncurses, GetText and friends
> are already installed.
>
> As the build finishes I see:
>
> ...
> /usr/local/lib64/libtermcap.a(tparam.o): In function `tparam':
> /home/scripts/termcap-1.3.1/tparam.c:101: multiple definition of `tparam'
> terminfo.o:terminfo.c:(.text+0x0): first defined here
> terminfo.o: In function `tparam':
> terminfo.c:(.text+0x4a): undefined reference to `tparm'
> collect2: error: ld returned 1 exit status
>
> It looks like it is due to a local copy of termcap.c:
>
> $ find . -name termcap.c
> ./emacs-24.5/src/termcap.c
>
> How do I tell Emacs to avoid its copy of Termcap, and use the one
> already built and installed
>
> ******************************
>
> Here is how Emacs was configured:
>
> PKG_CONFIG_PATH="${BUILD_PKGCONFIG[*]}" \
> CPPFLAGS="${BUILD_CPPFLAGS[*]}" \
> CFLAGS="${BUILD_CFLAGS[*]}" CXXFLAGS="${BUILD_CXXFLAGS[*]}" \
> LDFLAGS="${BUILD_LDFLAGS[*]}" LIBS="${BUILD_LIBS[*]}" \
> ./configure --prefix="$INSTALL_PREFIX" --libdir="$INSTALL_LIBDIR" \
> --with-xml2 --without-x --without-sound --without-xpm \
> --without-jpeg --without-tiff --without-gif --without-png --without-rsvg \
> --without-imagemagick --without-xft --without-libotf --without-m17n-flt \
> --without-xaw3d --without-toolkit-scroll-bars --without-gpm --without-dbus \
> --without-gconf --without-gsettings --without-makeinfo \
> --without-compress-install
>
> And here are the variables it was asked to use:
>
> INSTALL_PREFIX: /usr/local
> INSTALL_LIBDIR: /usr/local/lib64
>
> PKGCONFIG: /usr/local/lib64/pkgconfig
> CPPFLAGS: -I/usr/local/include -DNDEBUG
> CFLAGS: -m64 -march=native -fPIC
> CXXFLAGS: -m64 -march=native -fPIC
> LDFLAGS: -L/usr/local/lib64 -m64 -Wl,-R,/usr/local/lib64
> -Wl,--enable-new-dtags
> LDLIBS: -ldl -lpthread
>
> ******************************
>
> gcc -Demacs -I. -I. -I../lib -I./../lib -MMD -MF deps/.d -MP -m64
> -march=native -fPIC -Wl,-znocombreloc -L/usr/local/lib64 -m64
> -Wl,-R,/usr/local/lib64 -Wl,--enable-new-dtags \
> -o temacs vm-limit.o dispnew.o frame.o scroll.o xdisp.o menu.o
> window.o charset.o coding.o category.o ccl.o character.o chartab.o
> bidi.o cm.o term.o terminal.o xfaces.o emacs.o keyboard.o macros.o
> keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o minibuf.o
> fileio.o dired.o cmds.o casetab.o casefiddle.o indent.o search.o
> regex.o undo.o alloc.o data.o doc.o editfns.o callint.o eval.o
> floatfns.o fns.o font.o print.o lread.o syntax.o unexelf.o bytecode.o
> process.o gnutls.o callproc.o region-cache.o sound.o atimer.o doprnt.o
> intervals.o textprop.o composite.o xml.o inotify.o profiler.o
> decompress.o terminfo.o lastfile.o gmalloc.o ralloc.o
> ../lib/libgnu.a -lrt -ltermcap
> -lpthread -lm -lz
> /usr/local/lib64/libtermcap.a(tparam.o): In function `tparam':
> /home/scripts/termcap-1.3.1/tparam.c:101: multiple definition of `tparam'
> terminfo.o:terminfo.c:(.text+0x0): first defined here
> terminfo.o: In function `tparam':
> terminfo.c:(.text+0x4a): undefined reference to `tparm'
> collect2: error: ld returned 1 exit status
> gmake[1]: *** [Makefile:664: temacs] Error 1
> gmake[1]: Leaving directory '/home/scripts/emacs-24.5/src'
> gmake: *** [Makefile:387: src] Error 2
>
This hasn't been my wheelhouse for a long time, but it used to be that a
make (now gmake) would resolve such a conflict by using the most recent
file... so here doing a "touch termcap.c" on your preferred version
would be a fix.
But that fix would actually depend upon the contents of your Makefile.
So if the above doesn't work (and absent documentation telling you),
look into that Makefile to see if its code specify more recent files
gain priority or, alternatively, if some particular directory or
directory tree endows preference when there are duplicate files.
But before all that, I think what I would do would be "gcc [relevant
flags] /home/scripts/termcap-1.3.1/tparam.c" just to check if that by
itself compiles properly.
Happy hacking!
next prev parent reply other threads:[~2018-01-05 13:32 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-03 22:39 Duplicate symbols due to <emacs dir>/src/termcap.c Jeffrey Walton
2018-01-05 13:32 ` ken [this message]
2018-01-06 3:15 ` Glenn Morris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b8d07334-89d9-e5b7-7a49-0f306728cf3a@mousecar.com \
--to=gebser@mousecar.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).