[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
make always relinks the shared libraries
From: |
Sven Joachim |
Subject: |
make always relinks the shared libraries |
Date: |
Sat, 11 Aug 2018 09:34:51 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1.50 (gnu/linux) |
Running make twice ought to do nothing in the second run, but if shared
libraries are enabled, they will always be relinked. Example:
,----
| $ ./configure --with-shared --without-progs --without-tests && make
| [ output skipped ]
| $ make
| cd man && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/man'
| make[1]: Nothing to be done for 'all'.
| make[1]: Leaving directory '/tmp/ncurses/man'
| cd include && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/include'
| make[1]: Nothing to be done for 'all'.
| make[1]: Leaving directory '/tmp/ncurses/include'
| cd ncurses && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/ncurses'
| linking ../lib/libncurses.so.6.1
| gcc -O2 --param max-inline-insns-single=1200 -shared -Wl,-soname,`basename
../lib/libncurses.so.6.1 .6.1`.6,-stats,-lc -o ../lib/libncurses.so.6.1
../obj_s/hardscroll.o ../obj_s/hashmap.o ../obj_s/lib_addch.o
../obj_s/lib_addstr.o ../obj_s/lib_beep.o ../obj_s/lib_bkgd.o
../obj_s/lib_box.o ../obj_s/lib_chgat.o ../obj_s/lib_clear.o
../obj_s/lib_clearok.o ../obj_s/lib_clrbot.o ../obj_s/lib_clreol.o
../obj_s/lib_color.o ../obj_s/lib_colorset.o ../obj_s/lib_delch.o
../obj_s/lib_delwin.o ../obj_s/lib_echo.o ../obj_s/lib_endwin.o
../obj_s/lib_erase.o ../obj_s/lib_flash.o ../obj_s/lib_gen.o
../obj_s/lib_getch.o ../obj_s/lib_getstr.o ../obj_s/lib_hline.o
../obj_s/lib_immedok.o ../obj_s/lib_inchstr.o ../obj_s/lib_initscr.o
../obj_s/lib_insch.o ../obj_s/lib_insdel.o ../obj_s/lib_insnstr.o
../obj_s/lib_instr.o ../obj_s/lib_isendwin.o ../obj_s/lib_leaveok.o
../obj_s/lib_mouse.o ../obj_s/lib_move.o ../obj_s/lib_mvcur.o
../obj_s/lib_mvwin.o ../obj_s/lib_newterm.o ../obj_s/lib_newwin.o
../obj_s/lib_nl.o ../obj_s/lib_overlay.o ../obj_s/lib_pad.o
../obj_s/lib_printw.o ../obj_s/lib_redrawln.o ../obj_s/lib_refresh.o
../obj_s/lib_restart.o ../obj_s/lib_scanw.o ../obj_s/lib_screen.o
../obj_s/lib_scroll.o ../obj_s/lib_scrollok.o ../obj_s/lib_scrreg.o
../obj_s/lib_set_term.o ../obj_s/lib_slk.o ../obj_s/lib_slkatr_set.o
../obj_s/lib_slkatrof.o ../obj_s/lib_slkatron.o ../obj_s/lib_slkatrset.o
../obj_s/lib_slkattr.o ../obj_s/lib_slkclear.o ../obj_s/lib_slkcolor.o
../obj_s/lib_slkinit.o ../obj_s/lib_slklab.o ../obj_s/lib_slkrefr.o
../obj_s/lib_slkset.o ../obj_s/lib_slktouch.o ../obj_s/lib_touch.o
../obj_s/lib_tstp.o ../obj_s/lib_ungetch.o ../obj_s/lib_vidattr.o
../obj_s/lib_vline.o ../obj_s/lib_wattroff.o ../obj_s/lib_wattron.o
../obj_s/lib_winch.o ../obj_s/lib_window.o ../obj_s/nc_panel.o
../obj_s/safe_sprintf.o ../obj_s/tty_update.o ../obj_s/varargs.o
../obj_s/vsscanf.o ../obj_s/lib_freeall.o ../obj_s/expanded.o
../obj_s/legacy_coding.o ../obj_s/lib_dft_fgbg.o ../obj_s/lib_print.o
../obj_s/new_pair.o ../obj_s/resizeterm.o ../obj_s/use_screen.o
../obj_s/use_window.o ../obj_s/wresize.o ../obj_s/access.o ../obj_s/add_tries.o
../obj_s/alloc_ttype.o ../obj_s/codes.o ../obj_s/comp_captab.o
../obj_s/comp_error.o ../obj_s/comp_hash.o ../obj_s/db_iterator.o
../obj_s/doalloc.o ../obj_s/entries.o ../obj_s/fallback.o ../obj_s/free_ttype.o
../obj_s/getenv_num.o ../obj_s/home_terminfo.o ../obj_s/init_keytry.o
../obj_s/lib_acs.o ../obj_s/lib_baudrate.o ../obj_s/lib_cur_term.o
../obj_s/lib_data.o ../obj_s/lib_has_cap.o ../obj_s/lib_kernel.o
../obj_s/lib_keyname.o ../obj_s/lib_longname.o ../obj_s/lib_napms.o
../obj_s/lib_options.o ../obj_s/lib_raw.o ../obj_s/lib_setup.o
../obj_s/lib_termcap.o ../obj_s/lib_termname.o ../obj_s/lib_tgoto.o
../obj_s/lib_ti.o ../obj_s/lib_tparm.o ../obj_s/lib_tputs.o
../obj_s/lib_trace.o ../obj_s/lib_ttyflags.o ../obj_s/lib_twait.o
../obj_s/name_match.o ../obj_s/names.o ../obj_s/obsolete.o
../obj_s/read_entry.o ../obj_s/read_termcap.o ../obj_s/strings.o
../obj_s/tries.o ../obj_s/trim_sgr0.o ../obj_s/unctrl.o ../obj_s/visbuf.o
../obj_s/define_key.o ../obj_s/hashed_db.o ../obj_s/key_defined.o
../obj_s/keybound.o ../obj_s/keyok.o ../obj_s/version.o -L../lib -ldl
| /usr/bin/ld: total time in link: 0.057887
| cd ../lib && (ln -s -f libncurses.so.6.1 libncurses.so.6; ln -s -f
libncurses.so.6 libncurses.so; )
| make[1]: Leaving directory '/tmp/ncurses/ncurses'
| cd panel && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/panel'
| linking ../lib/libpanel.so.6.1
| gcc -O2 --param max-inline-insns-single=1200 -shared -Wl,-soname,`basename
../lib/libpanel.so.6.1 .6.1`.6,-stats,-lc -o ../lib/libpanel.so.6.1
../obj_s/panel.o ../obj_s/p_above.o ../obj_s/p_below.o ../obj_s/p_bottom.o
../obj_s/p_delete.o ../obj_s/p_hide.o ../obj_s/p_hidden.o ../obj_s/p_move.o
../obj_s/p_new.o ../obj_s/p_replace.o ../obj_s/p_show.o ../obj_s/p_top.o
../obj_s/p_update.o ../obj_s/p_user.o ../obj_s/p_win.o -L../lib -lncurses -ldl
| /usr/bin/ld: total time in link: 0.023453
| cd ../lib && (ln -s -f libpanel.so.6.1 libpanel.so.6; ln -s -f libpanel.so.6
libpanel.so; )
| make[1]: Leaving directory '/tmp/ncurses/panel'
| cd menu && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/menu'
| linking ../lib/libmenu.so.6.1
| gcc -O2 --param max-inline-insns-single=1200 -shared -Wl,-soname,`basename
../lib/libmenu.so.6.1 .6.1`.6,-stats,-lc -o ../lib/libmenu.so.6.1
../obj_s/m_attribs.o ../obj_s/m_cursor.o ../obj_s/m_driver.o
../obj_s/m_format.o ../obj_s/m_global.o ../obj_s/m_hook.o ../obj_s/m_item_cur.o
../obj_s/m_item_nam.o ../obj_s/m_item_new.o ../obj_s/m_item_opt.o
../obj_s/m_item_top.o ../obj_s/m_item_use.o ../obj_s/m_item_val.o
../obj_s/m_item_vis.o ../obj_s/m_items.o ../obj_s/m_new.o ../obj_s/m_opts.o
../obj_s/m_pad.o ../obj_s/m_pattern.o ../obj_s/m_post.o ../obj_s/m_req_name.o
../obj_s/m_scale.o ../obj_s/m_spacing.o ../obj_s/m_sub.o ../obj_s/m_userptr.o
../obj_s/m_win.o -L../lib -lncurses -ldl
| /usr/bin/ld: total time in link: 0.026481
| cd ../lib && (ln -s -f libmenu.so.6.1 libmenu.so.6; ln -s -f libmenu.so.6
libmenu.so; )
| make[1]: Leaving directory '/tmp/ncurses/menu'
| cd form && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/form'
| linking ../lib/libform.so.6.1
| gcc -O2 --param max-inline-insns-single=1200 -shared -Wl,-soname,`basename
../lib/libform.so.6.1 .6.1`.6,-stats,-lc -o ../lib/libform.so.6.1
../obj_s/fld_arg.o ../obj_s/fld_attr.o ../obj_s/fld_current.o
../obj_s/fld_def.o ../obj_s/fld_dup.o ../obj_s/fld_ftchoice.o
../obj_s/fld_ftlink.o ../obj_s/fld_info.o ../obj_s/fld_just.o
../obj_s/fld_link.o ../obj_s/fld_max.o ../obj_s/fld_move.o
../obj_s/fld_newftyp.o ../obj_s/fld_opts.o ../obj_s/fld_pad.o
../obj_s/fld_page.o ../obj_s/fld_stat.o ../obj_s/fld_type.o ../obj_s/fld_user.o
../obj_s/frm_cursor.o ../obj_s/frm_data.o ../obj_s/frm_def.o
../obj_s/frm_driver.o ../obj_s/frm_hook.o ../obj_s/frm_opts.o
../obj_s/frm_page.o ../obj_s/frm_post.o ../obj_s/frm_req_name.o
../obj_s/frm_scale.o ../obj_s/frm_sub.o ../obj_s/frm_user.o ../obj_s/frm_win.o
../obj_s/fty_alnum.o ../obj_s/fty_alpha.o ../obj_s/fty_enum.o
../obj_s/fty_generic.o ../obj_s/fty_int.o ../obj_s/fty_ipv4.o
../obj_s/fty_num.o ../obj_s/fty_regex.o -L../lib -lncurses -ldl
| /usr/bin/ld: total time in link: 0.029231
| cd ../lib && (ln -s -f libform.so.6.1 libform.so.6; ln -s -f libform.so.6
libform.so; )
| make[1]: Leaving directory '/tmp/ncurses/form'
| cd misc && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/misc'
| make[1]: Nothing to be done for 'all'.
| make[1]: Leaving directory '/tmp/ncurses/misc'
| cd c++ && make DESTDIR="" RPATH_LIST="/usr/lib" all
| make[1]: Entering directory '/tmp/ncurses/c++'
| make[1]: Nothing to be done for 'all'.
| make[1]: Leaving directory '/tmp/ncurses/c++'
`----
If "--without-progs --without-tests" is not specified, the result is
even worse since the programs are recompiled in the second make run.
This increases build times, invalidates stamp files and has caused
race conditions in the Debian build as noticed by Helmut Grohne in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903790.
Cheers,
Sven
- make always relinks the shared libraries,
Sven Joachim <=