[bug #68169] Linking standalone executables fails with missing readline symbols

Markus Mützel <[email protected]>
Newsgroups gmane.comp.gnu.octave.bugs
Message-ID <[email protected]>
Please use the bug tracker to post updates to a bug report.  The mailing list is intended as a read-only notification stream.  Info posted to this mailing list address won't appear in the tracker database where it is most useful.

URL:
  <https://savannah.gnu.org/bugs/?68169>

                 Summary: Linking standalone executables fails with missing
readline symbols
                   Group: GNU Octave
               Submitter: mmuetzel
               Submitted: Mon 23 Mar 2026 02:39:48 PM CET
                Category: Interpreter
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: None
                  Status: None
             Assigned to: None
         Originator Name:
        Originator Email:
             Open/Closed: Open
         Discussion Lock: Unlocked
                 Release: dev
        Operating System: GNU/Linux
           Fixed Release: None
         Planned Release: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Mon 23 Mar 2026 02:39:48 PM CET By: Markus Mützel <mmuetzel>
Trying to build standalone executables started to fail recently.
E.g., the CI on GitHub tries to build the following:

  cd examples/code
  mkoctfile --link-stand-alone embedded.cc -o embedded
  LD_LIBRARY_PATH="/usr/local/lib/octave/$(octave --eval "disp(version())")"
\
    ./embedded


That fails with the following missing symbol errors on Linux (Ubuntu) using
GCC:

/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_insert_text'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_copy_text'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_filename_quoting_function'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `read_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_newline'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_end'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_completion_word_break_hook'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_reset_after_signal'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_replace_line'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_filename_quoting_desired'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_re_read_init_file'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_set_pos'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_is_stifled'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_basic_quote_characters'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `using_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_kill_full_line'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `unstifle_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `clear_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_char_is_quoted_p'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_length'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_startup_hook'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_prefer_env_winsize'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_add_defun'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `append_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_list'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `where_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_instream'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_do_undo'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_get_screen_size'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_history_search_backward'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_event_hook'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_erase_empty_line'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_redisplay_function'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `write_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_read_init_file'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_filename_completion_desired'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_free_undo_list'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `previous_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_deprep_term_function'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_cleanup_after_signal'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_done'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_point'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_redisplay'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `stifle_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_base'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_pre_input_hook'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_line_buffer'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `remove_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_resize_terminal'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_outstream'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_history_search_forward'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_free_line_state'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_set_screen_size'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_completer_word_break_characters'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_filename_completion_function'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `readline'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_completion_matches'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_initialize'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `read_history_range'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_attempted_completion_function'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `add_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `max_input_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_readline_name'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_completer_quote_characters'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_get'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_terminal_name'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `replace_history_entry'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `history_truncate_file'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `current_history'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_completion_append_character'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_filename_quote_characters'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_basic_word_break_characters'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_clear_screen'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_variable_bind'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_filename_dequoting_function'
/usr/bin/ld: /usr/local/lib/octave/12.0.0/liboctinterp.so: undefined reference
to `rl_undo_list'
collect2: error: ld returned 1 exit status


Afaict, all of these are symbols that should be provided by the readline
library.

It looks like it is a regression from the refactoring in hg id 09959276eb64.

CC'ing Rik.








    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?68169>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQQk97aszIMMAvLLwm6qLAuaBUf3TgUCacFCpwAKCRCqLAuaBUf3
Tp6ZAP9AJZjBMIna59yHX/0nT7evGwcdyd9kjiuSiyCcUCKy3wEApC/9ljR7+F9V
LzHNF84fzE5mqJA67wtU9+HfFco6YgY=
=hUyd
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.