How to debug a program wrapped in a libtool script?

后端 未结 2 1667
[愿得一人]
[愿得一人] 2021-02-07 15:27

I have a project involving

  • shared libraries ie: mylib.so
  • (test) program using these shared libraries ie: test_mylib
相关标签:
2条回答
  • 2021-02-07 16:07

    This is problem I ran into a couples of days ago and there is no generic answer on SO yet. Only special cases. Here is the answer I found on this page: http://www.gnu.org/software/libtool/manual/html_node/Debugging-executables.html

    Until the program is installed, the system does not know where to look for the shared objects. They usually lies in .libs sub-directory of their source folder.

    Libtool generates a convenience script to allow debugging before the actual installation is done (who wants to install buggy software before, debug it after?)

    Fortunately, the generated script provides a helper for this:

    libtool --mode=execute gdb test_mylib
    
    0 讨论(0)
  • 2021-02-07 16:08

    The solution recommended by the libtool docs is to use static linking during development, as I decribed at: Build libtool application with static linking to local components

    To do this, use the --disable-shared option to the ./configure script.

    For example:

    ./configure --enable-debug --disable-shared
    

    Now the generated executable is a directly executable binary rather than a libtool script.

    This has the added benefit of roughly halving the build time.

    0 讨论(0)
提交回复
热议问题