unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
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!





  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).